DUAL是一个虚拟表
可用于显示不属于任何一张表的列,例如
DUAL表示只包含一个列DUMMY,并且只有 一行值是未知的数据
属于SYS用户并且可以被所有的用户使用
字符函数
1.大小写转换函数
LOWER:将大写或大小写混合的字符转换成小写
UPPER :将小写或大小写混合的字符转换成大写
INITCAP:将每个单词的第一个字母转换成大写,其余的字母都转换成小写
例子:查询雇员姓名、工作和工资大于1500的信息。
显示BLAKE的雇员编号、姓名和部门编号
INITCAP()函数
2.字符处理函数
(1)CONCAT
concat(string1,string2) 把string1和string2拼接起来
select concat('hello','world') from dual; //helloworld
(2)SUBSTR
格式一、substr(string1,a,b)
从string1的a位置截取长度为b的字符串
格式二、substr(string1,a)
从string1的第a个字符开始截取后面所有字母
(3)LENGTH、LENGTHB
length(string1):返回字符串所占字符长度,单位是字符
lengthb(string1):返回字符串所占字节长度,单位是字节
select length('你好') from dual; // 2
select lengthb('你好') from dual; // 4
(4)INSTR
格式一:instr(string1,string2) 返回string2第一次出现在string1的位置,若没有出现,则显示0
格式二:instr(string1,string2,start_position,nth_potision)
返回string1从start_position位置开始检索,找到第n次出现string2的位置
(5)LPAD、RPAD
lpad(string1,length,[pad_string]) 左填充
rpad(string1,length,[pad_string]) 右填充
string1待填充字符串
length字符长度,如果n大于string1,则填充至n,如果小于string1,则从左往右截取string1长度为length的字符串
pad_string填充字符,缺省值为空格
(6)TRIM
trim( leading|trailing|both string1 from string2)
从前面,后面,前后面去除string2中的string1,缺省值为both
select trim(leading 'a' from 'abccba')from dual; //bccba
select trim(trailing 'a' from 'abccba')from dual; //abccb
select trim(both 'a' from 'abccba')from dual; //bccb
select trim('a' from 'abccba') from dual; //bccb
select trim('ab' from 'abccba') from dual; //报错
(7)REPLACE
REPLACE(string,string1,string2)
该方式能够从“正文表达式”中找到“要搜寻的字符串 ” ,替换成“替换字符串”
例题:用字符函数实现查询姓名以N结尾的雇员名(不能用like)。
数值函数
CEIL(X):返回大于或等于X的最小整数
POWER(X,Y):返回X的Y次幂
ROUND(X,[Y]): 四舍五入到指定的小数位
TRUNC(X,[Y]): 截取到指定的小数位
MOD(X,Y): 取余数
1.使用CELX、POWER函数
2.使用ROUND函数
3.使用TRUNC函数
4.使用MOD函数
日期函数
SYSDATE 是用于返回日期和时间的函数,可以 使用SYSDATE就像引用某个列名一样。
表DUAL可用于查看SYSDATE,它属于SYS用户且可以被所有的用户使用
日期的运算
对日期使用算术运算
日期函数
MONTHS_BETWEEN(date1, date2):返回 date1 和 date2之间的月份的数量,结果可以是正数,也可以是负数。如果date1 晚于date2, 返回正数,如果date1 早于date2,返回负数。结果 的非整数部分表示不足一整月的那部分间隔。
ADD_MONTHS(date, n):向date加上n个月,得到一个新的日期。
NEXT_DAY(date1,’char’):求出date1之后一周内某天(按char给出的)的日期,char可以是一个有效的表示星期几的数字或者字符串。
LAST_DAY(date) :求出date所在的月的最后一天。
ROUND(date[,‘fmt’]):将date按照fmt指定的格式进行四舍五入,fmt为可选项,如果没有指定fmt,则默认为‘DD’,将date四舍五入为最近的天
TRUNC(date[,‘fmt’]):将date按照fmt指定的格式进行截取,fmt为可选项,如果没有指定fmt,则默认为‘DD’,将date截取为最近的天。
1.MONTHS_BETWEEN
2.ADD_MONTHS
3.NEXT_DAY
4.LAST_DAY
5.ROUND、TRUNC
在使用ROUND函数和TRUNC函数需要先使用 TO_DATE函数把字符串转换成日期型数据后才可以使用。
例题:显示了当前受雇时间小于35年的雇员的编号、受雇日期、当前受雇的月数TENURE 、满八 个月的复审日期REVIEW 、受雇后的第一个星期五以及受雇当月的最后一天。
转换函数
1.TO_CHAR 函数:Oracle显示日期的默认格式是“日-月-年” 形式 n TO_CHAR函数可以将日期的默认显示方式改变 为我们所指定的方式。
2.TO_NUMBER 函数:使用TO_NUMBER将一个字符串转换成数值 型数据。
3.TO_DATE 函数:使用TO_DATE将字符串转换成日期型数据。
4.NVL 函数:将NULL转换为一个实际的值。