也称标量函数,对于从表中查询的每一行,该函数都返回一个值。
单行函数出现在 SLEECT / WHERE 子句中。
1 、日期函数
对日期值进行运算,根据用途产生日期 / 数值类型的结果。
ADD_MONTHS(d, n) 返回 指定日期加上月数后的 日期值
select hiredate,add_months(hiredate,6) from emp
MONTHS_BETWEEN(d1, d2) 返回 两个日期间的 月数
SELECT MONTHS_BETWEEN ( (SELECT hiredate
FROM emp
WHERE ename = 'JAMES'), (SELECT hiredate
FROM emp
WHERE ename = 'SMITH')
)
months
FROM DUAL
LAST_DAY(d) 返回 指定日期当前的最后一天的 日期值
SELECT LAST_DAY(TO_DATE('2017-05','YYYY-MM')) from DUAL
RONUD(d,[fmt]) 返回 指定日期四舍五入格式(YEAR、MONTH、DAY)后的 日期值
select round(sysdate,'month') from dual :2017/4/1
NEXT_DAY(d,day) 返回 指定日期下一个星期几的 日期值
SELECT NEXT_DAY (TO_DATE ('2017-3-17', 'yyyy-mm-dd'), 2) 下个周二
FROM DUAL;
TRUNC(d,[fnt]) 返回 指定日期截断为格式后的 日期值
select trunc(sysdate,'year') 留年 from dual :2017/1/1
SELECT EXTRACT (YEAR FROM SYSDATE) yearFROM DUAL :2017
字符函数接受字符输入,并返回字符或数值。
INITCAP( char ) 首字母大写
LOWER ( char ) 转换为小写
UPPER ( char ) 转换为大写
LTRIM(char, set) 左裁切
set参数不知道是什么 select length(rtrim(' 1 2 ')) from dual :4
TRANSLATE(char, from, to) 按字母翻译
select translate('1234','12','u') from dual :u34
select translate('1234','1','uuuu') from dual :u234
REPLACE(char, search_str, replace_str) 字符串替换
SELECT REPLACE ('123', '12', 'q') FROM DUAL :q3
INSTR(char, substr[,pos]) 查找子串位置
select instr('12123456','123') from dual :3
CONCAT(char1, char2) 连接字符串
CHR( ascii ) 根据 ASCII 码返回对应字符串
LPAD / RPAD 左 / 右 填充
LPAD ( ' function ' , 15 , ' = ' ) 返回 ' =======function '
TRAM 开头或结尾(或 开头和结尾)裁剪特定的字符,默认裁剪空格。
TRIM ( [ LEADING | TRAILING ] trim_char)
LENGTH( char ) 返回字符串长度
DECODE 逐个值进行字符串替换
DECODE (expr, search1, result1, search2, result2,


DECODE (ostalus, ' p ' , ' 准备处理 ' , ' c ' , ' 已完成 ' )
3 、数字函数
数字函数接受数字输入并返回数值作为输出结果。
ABS (n) 取绝对值
CEIL(n) 向上取值
FLOOR (n) 向下去整
SIN (n) 正弦值
COS (n) 余弦值
POWER (m, n) 指数函数
SQRT (n) 平方根
MOD(m, n) 取余
ROUND (m, n) 小数点后精度四舍五入
TRUNC(m, n) 小数点后精度截断
4 、转换函数
转换函数将一种数据类型转换为另一种数据类型。
TO_CHAR (d | n, [ ,fmt ] ) 格式化 日期 / 数值
TO_DATE ( char [ ,fmt ] ) 将 fmt模型格式的字符串 转换为日期型
TO_NUMBER ( char ) 将 包含数字的的字符串转换为 数值型
5 、其他函数
NVL ( exp , exp2) 如果 exp 为空返回 exp2;如果非空返回 exp
NVL2 ( exp , exp2, exp3) 如果 exp 为空返回 exp3;如果非空返回 exp2
NULLIF (exp1, exp2) 比较两表达式,相等返回空值,不等则返回 exp1