数字函数
ABS 取绝对值 POWER 乘方 LN 10为底数取幂SQRT 平方根 EXP e的n次乘方 LOG(m,n) m为底数n取幂数学运算函数:ACOS ATAN ATAN2 COS COSH SIGN SIN SINH TAN TANH CEIL 大于或等于取整数 FLOOR 小于或等于取整数MOD 取余数 ROUND(n,m) 按m的位数取四舍五入值如果round(日期): 中午12以后将是明天的日期. round(sysdate,'Y')是年的第一天TRUNC(n,m) 按m的位数取前面的数值如果trunc(日期), 确省的是去掉时间字符函数CHR 按数据库的字符集由数字返回字符 CONCAT(c1,c2) 把两个字符c1,c2组合成一个字符, 和 || 相同REPLACE(c,s,r) 把字符c里出现s的字符替换成r, 返回新字符 SUBSTR(c,m,n) m大于0,字符c从前面m处开始取n位字符,m等于0和1一样, m小与0,字符c从后面m处开始取n位字符TRANSLATE(c,f1,t1) 字符c按f1到t1的规则转换成新的字符串
INITCAP 字符首字母大写,其它字符小写LOWER 字符全部小写UPPER 字符全部大写LTRIM(c1,c2) 去掉字符c1左边出现的字符c2RTRIM(c1,c2) 去掉字符c1右边出现的字符c2TRIM(c1,c2) 去掉字符c1左右两边的字符c2LPAD(c1,n,c2) 字符c1按指定的位数n显示,不足的位数用c2字符串替换左边的空位RPAD(c1,n,c2) 字符c1按指定的位数n显示,不足的位数用c2字符串替换右边的空位提示:去掉字符串中间的空格可以使用replace日期函数ADD_MONTHS(d,n) 日期值加n月LAST_DAY(d) 返回当月的最后一天的日期MONTHS_BETWEEN(d1,d2) 两个日期值间的月份NEXT_DAY(d) 返回日期值下一天的日期SYSDATE 当前的系统时间DUAL是SYS用户下一个空表,它只有一个字段dummy提示:dual可以理解为虚表,多在查询系统函数返回值时使用,以满足SELECT语法规则,如select sysdate from dual; select 3 + 4 from dual;转换函数TO_CHAR(date,'日期显示格式') TO_CHAR(number) 用于显示或报表的格式对齐TO_DATE(char,'日期显示格式') TO_LOB 把long字段转换成lob字段TO_NUMBER(char) 用于计算或者比较大小 日期显示格式年: YYYY, YEAR, YY季:Q月: MM, MONTH, MON日: DD, DAY, DY时: HH24, HH12, HH(12小时)分: MI秒: SS逻辑比较函数NVL(EXPR1, EXPR2)当EXPR1为空用EXPR2替代DECODE(EXPR﹐V1﹐R1﹐V2﹐R2....)当EXPR=V1时返回R1当EXPR=V2是放回V2…EXPR后条件和返回值成对出现,最后一个单值是不在条件中的返回值,如果没有单值,不满足条件的返回NULL。SELECT ENAME, DECODE(JOB, 'MANAGER', '经理', 'PRESIDENT', '总裁', 'SALESMAN', '销售', '不详') FROM SCOTT.EMP;CASE WHEN condition THEN express1 ELSE express2 END当condition成立返回express1否则返回express2SELECT ENAME, HIREDATE,(CASE WHEN TO_NUMBER(TO_CHAR(HIREDATE, 'MM')) > 6 THEN '下半年' ELSE '上半年' END) AS 入职时间 FROM SCOTT.EMP;--TO_CHAR(HIREDATE, 'MM')取时间月份