- 单行函数
a.字符串连接
- concat()
select concat('hello','你好') from dual;===hello你好
- || 管道通道符
select 'hello'||'你好' from dual;===hello你好
- INSTR(x, str [,start] [,n) 在 x 中查找 str,可以指定从 start 开始,也可以指定从第 n 次开始。
INSTR('Hello world', 'or')===8
b.取子字符串
- substr()
substr('helloab你好cdef,5,3)===oab
c.字符首次出现位置
- instr() 对大小写敏感
instr('helloworld','o')==5
d.去移除字符串两侧的空白字符或其他预定义字符
- trim()
trim('o' from 'ooabcoddefoo')===abcoddefoo
-
ltrim() - 移除字符串左侧的空白字符或其他预定义字符。
-
rtrim() - 移除字符串右侧的空白字符或其他预定义字符。
e.不足指定位数,补位指定字符
- lpad 左补
lpad('hello',10,'#")=== #####hello
- rpad右补=====hello#####
f.计算时间单行函数
add_month 上个月的今天
next_day(sysdate,'星期*) 下个周几几号
next_day(next_day(sysdate,'星期三'),'星期三') 下下个周三是几号
last_day(sysdate) 当前月份最后一天几号
g.保留指定位小数
- round()四舍五入
round(3.1415,3)===3.142
- trunc() 不四舍五入
trunc(3.1415,3)===3.121
h.NVL()函数
NVL(x,value) 若x为空,返回value,否则返回x
nvl2(x.value1,value2) 若x为空,返回value2,否则返回value1
i.获取日期中某个字段值
extract()
select extract(year from sysdate) 'year' from dual;
j.trunc(n,[m]) 该函数用于截取数字。
如果省掉m,就截去小数部分,
如果m是正数就截取到小数点的m位后,
如果m是负数,则截取到小数点的前m位。
eg、SELECT trunc(23.75123) FROM dual; –返回23
SELECT trunc(23.75123, -1) FROM dual; –返回20
SELECT trunc(23.75123, -3) FROM dual; –返回0
SELECT trunc(23.75123, 1) FROM dual; –返回23.7
SELECT trunc(23.75123, 2) FROM dual; –返回23.75
SELECT trunc(23.75123, 3) FROM dual; –返回23.751