Oracle 函数整理
一、字符控制函数
函数 | 结果 |
CONCAT('Hello','World') | HelloWorld |
SUBSTR('HelloWorld',1,5) | Hello |
LENGTH('HelloWorld') | 10 |
INSTR('HelloWorld','W') | 6 |
LPAD(salary,10,'*'):工资显示10位不足时用*补充 | ******2400 |
RPAD(salary,10,'*') | 2400****** |
TRIM('H' FROM 'HelloWorld') | elloWorld |
REPLACE('HelloWorld','H','E') | EelloWorld |
二、大小写控制函数
函数 | 结果 |
LOWER('HelloWorld') | HELLOWORLD |
UPPER('HelloWorld') | helloworld |
INITCAP('HelloWorld SQL') | Helloworld Sql |
三、数字函数
函数 | 结果 |
ROUND(四舍五入):ROUND(45.926,2) | 45.93 |
TRUNC(截断):TRUNC(45.926,2) | 45.92 |
MOD(求余):MOD(1600,300) | 100 |
四、日期函数
Oracle 中的日期型数据实际含有两个值: 日期和时间(函数SYSDATE 的返回值)
● 在日期上加上或减去一个数字结果仍为日期。
● 两个日期相减返回日期之间相差的天数。(日期不允许做加法运算,无意义)
● 可以用数字除24来向日期中加上或减去天数。
函数 | 描述 |
MONTHS_BETWEEN | 两个日期相差的天数 |
ADD_MONTHS | 向指定日期加上若干个月 |
NEXT_DAY | 指定日期的下一个星期*对应的日期 |
LAST_DAY | 本月的最后一天 |
ROUND | 日期四舍五入 |
TRUNC | 日期截取 |
举例: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') ——> '08-SEP-95'
LAST_DAY('01-FEB-95') ——> '28-FEB-95'
五、数据类型转化
日期格式元素与显示情况列表如下(TO_CHAR(data,'format_model)函数对日期转换时,format_model常用的属性如下):
时间格式:
举个栗子:
TO_CHAR函数对数字的转换(TO_CHAR(number,'format_model')):下面在 TO_CHAR 函数中经常使用的几种格式:
9 | 数字 |
0 | 零 |
$ | 美元符 |
L | 本地货币符号 |
' | 小数点 |
, | 千位符 |
举个栗子:
六、通用函数:这些函数适用于任何数据类型,同时也适用于空值
【1】NVL(expr1,expr2):将空值转化成一个已知的值,可以使用的数据类型有日期、字符、数字。函数的一般形式有:
— NVL(commission_pct,0)
— NVL(hire_date,'01-JAN-97')
— NVL(job_id,'No Job Yet')
【2】NVL2(expr1,expr2,expr3):expr1不为NULL,返回expr2;为NULL时,返回expr3。
【3】NULLIF(expr1,expr2):相等返回NULL,不相等返回expr1。
【4】COALESCE(expr1,expr2,......,exprn):与 NVL 相比有点在于 COALESCE 可以同时处理交替的多个值。如果第一个表达式为NULL,则返回下一个表达式,依次类推。
七、条件表达式
【1】、在 SQL 语句中使用 IF-THEN-ELSE 逻辑时,使用两种方法:
— CASH 表达式
☛下面使用 case 表达式的一个例子:
— DECODE 函数
☛下面使用 case 表达式的一个例子:
八、分组函数
常用的分组函数如下(经常使用就不过多解释了):GROUP BY、MAX、MIN、AVG、COUNT、SUM等。
就说一个知识点吧:条件判断里面包含组函数的必须使用 HVING 不能使用 WHERE: