第三章 单行函数
Oracle基础笔记二1.单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值
2.大小写控制函数:
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
3.字符控制函数:
CONCAT('Hello', 'World') HelloWorld
SUBSTR('HelloWorld',1,5) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld', 'W') 6
LPAD(salary,10,'*') *****24000
RPAD(salary, 10, '*') 24000*****
TRIM('H' FROM 'HelloWorld') elloWorld
REPLACE(‘abcd’,’b’,’m’) amcd
4.数字函数:
ROUND: 四舍五入
ROUND(45.926, 2) 45.93
TRUNC: 截断
TRUNC(45.926, 2) 45.92
MOD: 求余
MOD(1600, 300) 100
5.日期:
Oracle 中的日期型数据实际含有两个值: 日期和时间。
函数SYSDATE 返回:日期 时间
日期的数学运算:
①在日期上加上或减去一个数字结果仍为日期。
②两个日期相减返回日期之间相差的天数。
日期不允许做加法运算,无意义
③可以用数字除24来向日期中加上或减去天数。
6.日期函数:
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'
Assume SYSDATE = '25-JUL-95':
ROUND(SYSDATE,'MONTH') 01-AUG-95
ROUND(SYSDATE ,'YEAR') 01-JAN-96
TRUNC(SYSDATE ,'MONTH') 01-JUL-95
TRUNC(SYSDATE ,'YEAR') 01-JAN-95
7.隐式数据类型转换:自动
显式数据类型转换:
①TO_CHAR函数对日期的转换:
TO_CHAR(date, 'format_model')
格式:
必须包含在单引号中而且大小写敏感。
可以包含任意的有效的日期格式。
日期之间用逗号隔开。
SELECT TO_CHAR(sysdate,‘yyyy-mm-dd hh:mi:ss’) FROM dual;
时间格式: HH24:MI:SS AM
使用双引号向日期中添加字符 DD "of" MONTH
②TO_DATE 函数对字符的转换:
使用 TO_DATE :
TO_DATE(char[,'format_model'])
使用 TO_DATE 函数将字符转换成数字:
TO_DATE('2012年10月29日081021','yyyy"年"mm"月"dd"日"hh:mi:ss)
from dual
③TO_CHAR函数对数字的转换:
TO_CHAR(number, 'format_model')
例如:
SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Ernst';
④TO_NUMBER 函数对字符的转换 :
使用 TO_NUMBER 函数将字符转换成日期:TO_NUMBER(char[, 'format_model'])
使用 TO_NUMBER :TO_NUMBER(‘¥1,234,567,890.00’,’L999,999,999,999.99’)
from dual
8.通用函数:
这些函数适用于任何数据类型,同时也适用于空值:
①NVL (expr1, expr2)
将空值转换成一个已知的值:
可以使用的数据类型有日期、字符、数字。
函数的一般形式:
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')
②NVL2 (expr1, expr2, expr3) : expr1不为NULL,返回expr2;为NULL,返回expr3。
③NULLIF (expr1, expr2) : 相等返回NULL,不等返回expr1
④COALESCE (expr1, expr2, ..., exprn)
COALESCE 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。
如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE 。
9.条件表达式:
在 SQL 语句中使用IF-THEN-ELSE 逻辑
使用两种方法:
CASE 表达式:
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
DECODE 函数:
DECODE(col|expression, search1, result1 ,
[, search2, result2,...,]
[, default])
本文出自 “阿成的博客” 博客,转载请与作者联系!