目录
简单函数
搜索通配符%
SELECT * FROM dual WHERE a LIKE '%\%%' ESCAPE '\'
排序
ORDER BY…… ASC 升序
ORDER BY……DESC 倒序
大小写转换函数
LOWER('SQL Course') sql course 大写转换为小写
UPPER('SQL Course') SQL COURSE 小写转换为大写
INITCAP('SQL Course') Sql Course 单词首字母转换为大写
字符串操作函数
CONCAT('Hello','World') HelloWorld 字符拼接
SUBSTR('HelloWorld;,1,5) Hello 字符截断
LENGTH(‘HelloWorld’)10 计算字符串长度
INSTR('HelloWorld',6) W 取字符串中的固定位字符
LPAD('24000',10,'*') *****24000 从左开始填充字符串至固定长度
RPAD('24000',10,'*') 24000***** 从右开始填充字符串至固定长度
TRIM('H' FROM 'HelloWorld') elloWorld 去除字符串指定字符
TRIM('Hello World ') Hello World 去除字符串前后的空格
数字操作函数
ROUND(45.926,2) 45.93 四舍五入函数
TRUNC(45.926,2) 45.92 向下舍入
MOD(1600,300) 100 取余数
日期操作函数
在Oracle中常见的日期格式有:
YYYY-MM-DD
MM-DD-YYYY
DD-MMM-YY
MONTHS_BETWEEN('01-SEP-95','11-JAN-94') 19.6774194 比较两个月份之间的间隔月份
ADD_MONTHS('11-JAN-94',6) 11-Jul-94 在给定日期之后加上月份
NEXT_DAY('01-SEP-95','FRIDAY') 8-Sep-95 计算给定日期之后的下一个周五的时间
NEXT_DAY('01-SEP-95',1) 3-Sep-95 计算给定日期之后的下一周(以周日为一周的初始)的第一天
NEXT_DAY('1995-09-01',1) ORA-01861:literal does not match format string
NEXT_DAY(to_date('1995-09-01','YYYY-MM-DD'),1)) 3-Sep-95
LAST_DAY('01-FEB-95') 28-Feb-95 计算给定日期该月的最后一天
ROUND('25-JUL-95','MONTH') 1-Aug-95
ROUND('25-JUL-95' ,'YEAR') 1-Jan-96
TRUNC('25-JUL-95' ,'MONTH') 1-Jul-95
TRUNC('25-JUL-95','YEAR') 1-Jan-95
数据类型转换
在表达式中Oracle常会自动进行转换(隐式转换):
从CHAR/VARCHAR到NUMBER,从CHAR/VARCHAR到DATE(三位英文字母格式的)
数据类型转换-日期到字符串转换
TO_CHAR(date,'format_model')
日期格式化元素 | 意义 |
---|---|
YYYY | 4位数字表示的年份 |
YEAR | 英文表示的年份 |
MM | 2位数字表示的月份 |
MONTH | 英文表示的月份 |
MON | 3个字母描述的英文月份简称 |
DD | 2位数字表示的日期 |
DAY | 英文描述的星期几 |
DY | 3个字母描述的星期几简称 |
HH24:MI:SS AM | 时分秒格式化 |
DDspth | 英文描述的月中第几天 |
数据类型转换-数字到字符串转换
TO_CHAR(number,'format_model');
数字格式化元素 | 意义 |
---|---|
9 | 表示一个数字 |
0 | 强制显示0 |
$ | 放一个美元占位符 |
L | 放一个美元占位符 |
. | 显示一个小数点占位符 |
, | 显示一个千分位占位符 |
数据类型转换-字符串到数字转换
TO_NUMBER(char[,'format_model']);
select TO_NUMBER('4456') from dual; 正确
select TO_NUMBER('$4,456') from dual; 错误
select TO_NUMBER('$4,456','$9,999' )from dual; 正确
select TO_NUMBER('$4,456,455.000','$9,999.999' )from dual; 错误,后面的转换长度必须比前面的指定字符长
select TO_NUMBER('$4,456,455.000','$9,999,999,999,999.999' )from dual; 正确
其它常用单行函数
NVL (expr1, expr2) 如果expr1为空,则返回expr2
NVL2 (expr1, expr2, expr3) 如果expr1为空,则返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2) 如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, ..., exprn) 如果expr1不为空,则返回expr1,结束;否则计算expr2,直到找到一个不为NULL的值 或者如果全部为NULL,也只能返回NULL了
条件表达式-CASE
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_expr3 THEN return_expr3
ELSE else_expr]
END
条件表达式-DECODE
DECODE (expr,comparison_expr1,return_expr1,
[comparison_expr2,return_expr2,comparison_expr3,returan_expr3],else_expr)