一、数据类型函数
1、数学函数
1)绝对值
ABS( num)
2)向上取整
CEIL( 2.1 )
3)向下取整
FLOOR( 2.6 )
4)四舍五入
ROUND ( value , precision )
ROUND ( 2.66 , 1 )
ROUND ( 2.66 , 0 )
5)截取
TRUNC( value , decimals)
TRUNC( 123.5678 , 1 )
TRUNC( 123.5678 , 0 )
TRUNC( 123.5678 , - 1 )
TRUNC( 123.5678 , - 2 )
6)幂运算
POWER( value , exponent)
POWER( 3 , 2 )
7)平方根
SQRT( 9 )
8)取余
MOD ( 10 , 3 )
9)判断正负数
SIGN( NUM)
2、字符串函数
1)字符串长度
LENGTH( 'abc' )
LENGTHB( '中国' )
2)字符串拼接
CONCAT( 'ab' , 'cd' )
'ab' || 'cd'
3)指定字符在字符串左边填充
LPAD( 'abc' , 5 , '+' )
4)指定字符在字符串右边填充
RPAD( 'abc' , 5 , '+' )
5)转大小写
UPPER( 'abc' )
LOWER( 'ABc' )
6)字符串第1位变大写,其它变小写
INITCAP( 'aBc' )
7)去除字符串两端内容
TRIM( ' abc ' )
TRIM( 'a' from 'abc' )
8)去除字符串左侧内容
LTRIM( ' abc' )
LTRIM( 'aba' , 'a' )
LTRIM( 'ba' , 'a' )
9)去除字符串右侧内容
RTRIM( 'abc ' )
RTRIM( 'aba' , 'a' )
RTRIM( 'bc' , 'a' )
10)截取字符串
SUBSTR( value , start , length)
SUBSTR( 'abcd' , 1 , 2 )
SUBSTR( 'abcd' , 2 , 2 )
SUBSTR( 'abcd' , 2 )
SUBSTR( 'abcd' , - 2 , 2 )
11)获取字串在字符串的位置
INSTR( value , 子串, 开始位置, 第几次出现)
INSTR( 'abcdab' , 'a' )
INSTR( 'abcd' , 'e' )
INSTR( 'abcab' , 'a' , 1 , 2 )
12)字符串反转
REVERSE( 'abc' )
13)替换
REPLACE ( value , 需要替换的字符串, 替换成的字符串)
REPLACE ( 'abbab' , 'a' , 'b' )
REPLACE ( 'abab' , 'ab' , 'b' )
REGEXP_REPLACE( value , 正则表达式, 替换成的字符串)
REGEXP_REPLACE( '12b' , '[0-9]+' , 'b' )
3、日期时间函数
1)当前日期时间
SYSDATE
SYSTIMESTAMP
CURRENT_DATE
2)提取
EXTRACT( YEAR FROM 日期)
EXTRACT( MONTH FROM 日期)
EXTRACT( DAY FROM 日期)
EXTRACT( HOUR FROM 日期)
EXTRACT( MINUTE FROM 日期)
EXTRACT( SECOND FROM 日期)
3)运算
ADD_MONTHS( 日期时间, count)
date1 - date2
4)格式化
format 说明 YYYY 4位年 MM 2位月 MONTH 英文月:JUNE MON 月的3字母缩写:JUN DD 月中天 DAY 星期几:Sunday DY 星期几英文3字母缩写:SUN HH12 12小时制 HH24 24小时制 MI 分钟 SS 秒 AM或PM 该日期是上午则会显示AM,下午则显示PM
TO_CHAR( 日期, format)
TO_CHAR( SYSDATE, 'YYYY-MM-DD HH24:MI:SS' )
TO_CHAR( SYSDATE, 'AM-YYYY-MM-DD HH24:MI:SS' )
TO_DATE( 字符串, format)
TO_DATE( '2019-12-05 17:26:02' , 'YYYY-MM-DD HH24:MI:SS' )
5)最早/最晚的日期
LEAST( date1, date2, . . . . . . )
GREATEST( date1, date2, . . . . . . )
6)本月最后一天的此刻
LAST_DAY( SYSDATE)
7)两个日期相差的月数
MONTHS_BETWEEN( date1, date2)
8)下一个周几的日期
NEXT_DAY( 日期, 星期几)
NEXT_DAY( SYSDATE, 2 )
9)四舍五入
ROUND ( SYSDATE, 'MONTH' )
10)TRUNC
TRUNC( SYSDATE, 'IW' )
TRUNC( SYSDATE, 'IW' ) + 6
TRUNC( SYSDATE, 'MONTH' )
TRUNC( LAST_DAY( SYSDATE) )
TRUNC( SYSDATE, 'Q' )
TRUNC( SYSDATE, 'YEAR' )
4、其它
1)转换
TO_CHAR( 123.12 , '000.00' )
TO_CHAR( 123.12 , '0000.000' )
TO_CHAR( 100100.12 , '$000,000.00' )
TO_NUMBER( value , format)
TO_NUMBER( '12345' )
TO_NUMBER( '$123,456.12' , '$999,999.99' )
CAST( value AS 数据类型)
CAST( '123' AS NUMBER)
CAST( '123.56' AS NUMBER)
CAST( '123.56' AS NUMBER( 4 , 1 ) )
CAST( '123.56' AS INTEGER )
二、聚合函数
1、平均值
AVG ( column )
SELECT AVG ( AGE) FROM T_USER
2、最大值
MAX ( column )
3、最小值
MIN ( column )
4、求和
SUM ( colnum)
SUM ( colnum+ column + . . . )
5、统计数量
COUNT ( column )
COUNT ( * )
COUNT ( id)
三、其它
1、NVL
NVL( expression, value )
SELECT NVL( NAME, '未知' ) FROM T_USER;
2、NVL2
NVL2( expression, x, y)
SELECT NVL2( NAME, NAME, '未知' ) FROM T_USER;
3、NULLIF
NULLIF ( x, y)
SELECT NULLIF ( 1 , 0 ) FROM DUAL;
4、DECODE
DECODE( a, b, c, d)