Oracle数据库学习教程
单行函数
1.字符函数
- 转小写:lower("")
select lower("HeLLo")
- 转大写:upper("")
- 首字母大写:initcap("")
- 拼接字符串:concat("1","2")
- 截取字符串:substr("12345",2) -->从第二位截取到结束
- 获取长度:length(字符数)/lengthb(字节数)
- 找子串,返回位置:instr("hello","ll")
- 左填充:lpad("hello",8,'#')-->"hello###",右填充rpad
- 去掉字符:trim('H' from 'Hello worldH') --> "ello world"
- 只是去掉头尾,如'H1H2H3H'-->'1H2H3'
- 替换:replace('hello','l','t') ---> "hetto"
2. 数值函数
- round:四舍五入 round(45.926,2) 45.93
- trunc:截断 trunc(45.926,2) 45.92
- mod:求余 mod(1600,300) 100
3.时间/日期函数
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
日期可以相减
不能相加,但是能加数字
months_between(sysdate,hiredate):两个日期值相差的月数
add_mouths():在某日期上加上多少个月
last_day():日期所在月的最后一天
next_day(sysdate, '星期一'):指定日期的下一个日期(这里是指星期一)
按日期进行四舍五入和截断
round(sysdate,'month')
trunc(sysdate,'month')
4.转换函数
-
隐式转换:
-
select * from emp where hiredate = '17-11 月-81'
-
-
显式转换:
- 比如to_char()函数
- 还有to_number(),to_date()
这个是to_char常用格式:
select to_char(sal, 'L9,999.99') from emp;
SQL> select to_number('¥2,975.00', 'L9,999.99') 转成数字 from dual;
select to_date('2015-05-11 15:17:06 今天是 星期一', 'yyyy-mm-dd hh24:mi:ss "今天是" day') from dual
优先选择显式转换,可以省去Oracle解析的时间
5.通用函数
这些函数适用于任何数据类型,包括NULL
- NVL(a,b) 如果a=null,返回b
- NVL2(a,b,c) 如果a=null,返回c,否则返回b
- NULLIF(a,b) 如果a=b,返回null,否则返回a
- COALESCE(a,b...n) 找第一个不为空的值
6.条件表达式
- CASE..WHEN...THEN..END
case 列名 when 条件 then 命令 end
- DECODE()
decode(列名,[条件1,表达式1]...,默认表达式)