单行函数 --操作数据对象 --接受参数返回一个结果 --只对一行进行变换 --每行返回一个结果 --可以转换数据类型 --可以嵌套 --参数可以是一列或一个值
字符函数 SQL> select lower(‘HELLO‘) 大写转小写,upper(‘hello2‘) 小写转大写,initcap(‘hellothis world‘) 首字母大写 from dual; 大写 小写转 首字母大写 ----- ------ ---------------- hello HELLO2 Hello This World
concat连接函数 --SQL> select ‘hello‘ || ‘world‘ 连接函数1,concat(‘fly‘,‘with‘) 连接函数2 from dual; 连接函数1 连接函 ---------- ------- helloworld flywith
substr(a,b)--从a中,第b位开始取 substr(a,b,c)--从a中,第b位开始提取c个字符 SQL> select substr(‘abcdefgh‘,3) result1,substr(‘12345678‘,2,5) result2 from dual; RESULT RESUL ------ ----- cdefgh 23456
length获取字符数 lengthb获取字节数 一个中文是2个字节 SQL> select length(‘abcde‘),length(‘世界‘),length(‘abcde‘),lengthb(‘世界‘) from dual; LENGTH(‘ABCDE‘) LENGTH(‘世界‘) LENGTH(‘ABCDE‘) LENGTHB(‘世界‘) --------------- -------------- --------------- --------------- 5 2 5 4
lpad()左填充函数 rpad()右填充函数 SQL> select lpad(‘abcd‘,10,‘*‘),rpad(‘abcd‘,10,‘#‘) from dual; LPAD(‘ABCD RPAD(‘ABCD ---------- ---------- ******abcd abcd######
instr(‘母串‘,‘子串‘);在母串中查找子串,返回子串在母串中的位置,找不到返回0。 SQL> select instr(‘abcdef‘,‘de‘) from dual; INSTR(‘ABCDEF‘,‘DE‘) -------------------- 4
trim去掉前后指定的字符,字符可以是空格,也可以不是空格 SQL> select trim(‘h‘ from ‘hehlloh‘) from dual; --注意去除的是最前后或者最后面的指定字符,中间的不会去除 --注意指定字符区分大小写 TRIM( ----- ehllo
replace替换 SQL> select replace(‘helloword‘,‘w‘,‘#‘) from dual; REPLACE(‘ --------- hello#ord --注意是全局替换,并非只替换一个
数字函数 round:四舍五入 SQL> select round(45.926,2) AA,round(45.926,1) BB,round(45.926,0) CC,round(45.926,-1) DD,round(45.926,-2) EE from dual; AA BB CC DD EE ---------- ---------- ---------- ---------- ---------- 45.93 45.9 46 50 0 -- 1保留到小数点后1位 -- 0保留到个位 -- -1保留到十位 -- -2保留到百位
trunc:截断小数点后面的n位 SQL> select trunc(45.926,1) from dual; TRUNC(45.926,1) --------------- 45.9
mod求余 SQL> select mod(4,3) from dual; MOD(4,3) ---------- 1
日期函数 oracle中日期类型数据实际含有两个值:日期和时间。 默认的日期格式是 DD-MON-RR SQL> select sysdate-1 昨天,sysdate 今天,sysdate+1 明天 from dual; 昨天 今天 明天 -------------- -------------- -------------- 05-1月 -17 06-1月 -17 07-1月 -17
to_char(‘日期/数字‘,format)把数字或者日期转换成指定格式的字符串 select to_char(sysdate-1,‘yyyy-mm-dd hh24:mi:ss‘) 昨天, to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) 今天, to_char(sysdate+1,‘yyyy-mm-dd hh24:mi:ss‘) 明天 from dual 昨天 今天 明天 ------------------- ------------------- ------------------- 2017-01-05 22:52:02 2017-01-06 22:52:02 2017-01-07 22:52:02
日期的数学运算 --在日期上加上或减去一个数字结果仍然为日期 --两个日期相减返回日期之间相差的天数 --可以用数字除24来向日期中加上或减去小时
--查询员工入职时间,按照天、周、月、年方式显示 select ename,sysdate-hiredate 天,(sysdate-hiredate)/7 周, (sysdate-hiredate)/30 月,(sysdate-hiredate)/365 年 from emp
months_between()--两个日期相差的月数 --精确计算员工的入职月数 SQL> select months_between(sysdate,hiredate) 入职月数 from emp;
add_months()--向指定日期中加上若干月数 SQL> select to_char(add_months(sysdate,2),‘yyyy-mon-dd‘) 当前月数加上两个月 from emp;
next_day()--指定日期的下一个日期(天) --查询当前日期的下一个周一 SQL> select to_char(next_day(sysdate,‘星期一‘),‘yyyy-mon-dd‘) 当前日期的下一个星期一 from dual; 结果 2017-1月 -09
last_day()--本月的最后一天 SQL> select to_char(last_day(sysdate),‘yyyy-mon-dd‘) 当前月数加上两个月 from emp; round()--日期的四舍五入(按月四舍五入,过月半,则显示下个月) trunc()--日期截断
时间: 2024-10-08 13:27:28