字符串处理
LENGTH : 计算计算字符串的长度 ,LENGTH(column)
LOWER/UPPER : 将字符全部变成小写或者大写
SUBSTR(string,start,count) :字符串截取 substr(13088888888,3,8)= 08888888
REPLACE(string,s1,s2) : 字符串替换 replace('he love you','he','i')=i love you
CONCAT(strexp, strexp): 连接两个字符串 concat(first_name,last_name)
Trim():截取字符串两端特殊字符 trim(' ddd ')
数字处理
FLOOR(n): 取整 floor(2345.67)=2345
ROUND( number, 小数位数 ):四舍五入 ROUND(45.926, 2)=45.93
TRUNC( number, 小数位数 ):小数位数以外的全部舍去 TRUNC(45.926, 2)= 45.92
MOD( n1, n2 ): 取余 相当于 n1 % n2 MOD(10, 3)=1
to_number: 把字符转换成数字
逻辑函数
nvl(ex1,ex2) :
ex1值为空则返回ex2,否则返回该值本身ex1 nvl(comm,0)
nullif(ex1,ex2):
值相等返空,否则返回第一个值
nvl2(ex1,ex2,ex3):
如果ex1不为空,显示ex2,否则显示ex3
coalesce(ex1,ex2,....) :
返回列表中第一个非空表达式 在查询时多列选一的时候用处比较大
sign()
函数根据某个值是0、正数还是负数,分别返回0、1、-1 例如 sign(10-1) 返回1,sign(1-10) 返回-1, sign(1-1) 返回0
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
decode(sign(工资-8000),1,工资*1.15,-1,工资*1.20,工资*1.10) 工资在8000以上的涨15%,以下的涨20%, 其他的10%
case when 表达式 then 值/函数 else 值/函数 end
处理日期
MONTHS_BETWEEN(date2,date1): 两日期相差多少月 months_between('01-4月-08','02-8月-08')
ADD_MONTHS: 增加或减去月份 add_months(to_date(199912,yyyymm),-2/2)
Last_day(date1) : 计算指定日期所在月份的最后一天的日期
TO_DATE格式(以时间:2007-11-02 13:45:25为例)
TO_CHAR日期转换成字符串,格式化的内容是一样的
Year:
yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
yyyy four digits 四位年 显示值:2007
Month:
mm number 两位月 显示值:11
mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov
month spelled out 字符集表示 显示值:11月,若是英文版,显示november
Day:
dd number 当月第几天 显示值:02
ddd number 当年第几天 显示值:02
dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri
day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday
ddspth spelled out, ordinal twelfth
Hour:
hh two digits 12小时进制 显示值:01
hh24 two digits 24小时进制 显示值:13
Minute:
mi two digits 60进制 显示值:45
Second:
ss two digits 60进制 显示值:25
其它
Q digit 季度 显示值:4
WW digit 当年第几周 显示值:44
W digit 当月第几周 显示值:1
24小时格式下时间范围为: 0:00:00 - 23:59:59....
12小时格式下时间范围为: 1:00:00 - 12:59:59 ....
常用的分组函数
AVG ([DISTINCT|ALL]n)
COUNT ({ *|[DISTINCT|ALL]expr})
MAX ([DISTINCT|ALL]expr)
MIN ([DISTINCT|ALL]expr)
SUM ([DISTINCT|ALL]n)