Oracle单行函数-字符函数
单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行交换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以使一列或者是一个值
常见分类:
字符函数:
大小写控制函数
LOWER(待转换的字符串):参数里面的字符串,转换成小写的格式
SELECT empno, LOWER(ename), Sal FROM emp;
UPPER(待转换的字符串):参数里面的字符串,转换成大写的格式
INITCAP(待转换的字符串):将字符串首字母转换成大写,其他变成小写
字符控制函数:
CONCAT(字符串1,字符串2):将字符串1,2连接来获得一个新的字符串。[仅限两个字符]
SELECT CONCAT(ename, 'HELLO') FROM emp;
SELECT CONCAT(ename, CONCAT('HELLO', 'WORLD')) FROM emp;
SUBSTRING(字符串,下标1,下标2):拆分字符串。[下标1代表第几个字符开始拆分,下标2代表第几个字符终止拆分]
SELECT SUBSTRING('HELLO,WORLD', 1,3) FROM DUAL;
LENGTH(字符串):获取字符的长度。
SELECT ename, LENGTH(ename) FROM emp;
补齐操作:
LPAD(字段名,要多少位,补齐的字符)左补齐:
SELECT LPAD(ename, 10, '*') FROM emp;
RPAD(字段名,要多少位,补齐的字符)右补齐:
SELECT LPAD(ename, 10, '*') FROM emp;
TRIM('h' FROM '字段名'):截取字符
REPLACE('abcd', 'b', 'm'):替换字符
数字函数:
ROUND(待四舍五入的值, 保留小数点位数):四舍五入,ROUND函数第二个参数可省略
SELECT ROUND(56.187, 2) FROM DUAL; --结果为56.19
TRUNC:截断
MOD:求余
通用函数:
这些函数适用于任何数据类型,同时也适用于数据类型,同时也适用于空值
NVL(expr1, expr2):expr1是否为空,如果为空返回expr2,如果不为空返回expr1的值
SELECT ename, NVL(ngr, '没有领导'), deptno FROM enp;
--NGR 查找领导名,没有就为零
NVL2(expr1, expr2, expr3):expr不为NULL,返回expr2;为NULL,返回expr3(类似于三元运算符)
SELECT NVL2(Sal, 800, 300) FROM emp;
NULLIF(expr1, expr2):两个表达式相等返回空,不相等返回expr1;
COALESCE函数
COALESCE与NVL相比的优点在于COALESCE可以同时处理交替的多个值。
如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE。
SELECT ename,COALESCE(Sal, dept, 2000) FROM emp;
条件表达式
在SQL语句中使用IF-THEN-ELSE逻辑
CASE表达式
CASE 待匹配的值 WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
--给不同的部门调薪
eg:SELECT ename, deptno,
CASE deptno WHEN 10 THEN Sal *1.1
WHEN 20 THEN Sal *1.2
WHEN 30 THEN Sal *1.3
ELSE
Sal
END as 调整倍数后的工资
FROM emp;
DECODE函数(在需要使用IF-THEN-ELSE逻辑时):
DECODE(COL|expression, search1, result1,
[,search2, result2......]
[,default])
eg:SELECT ename, deptno, DECODE(deptno, 10, Sal*1.1, 20, Sal*1.2, 30, Sal*1.3 FROM emp);
单行函数:
操作数据对象
接受参数返回一个结果
只对一行进行交换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以使一列或者是一个值
常见分类:
字符函数:
大小写控制函数
LOWER(待转换的字符串):参数里面的字符串,转换成小写的格式
SELECT empno, LOWER(ename), Sal FROM emp;
UPPER(待转换的字符串):参数里面的字符串,转换成大写的格式
INITCAP(待转换的字符串):将字符串首字母转换成大写,其他变成小写
字符控制函数:
CONCAT(字符串1,字符串2):将字符串1,2连接来获得一个新的字符串。[仅限两个字符]
SELECT CONCAT(ename, 'HELLO') FROM emp;
SELECT CONCAT(ename, CONCAT('HELLO', 'WORLD')) FROM emp;
SUBSTRING(字符串,下标1,下标2):拆分字符串。[下标1代表第几个字符开始拆分,下标2代表第几个字符终止拆分]
SELECT SUBSTRING('HELLO,WORLD', 1,3) FROM DUAL;
LENGTH(字符串):获取字符的长度。
SELECT ename, LENGTH(ename) FROM emp;
补齐操作:
LPAD(字段名,要多少位,补齐的字符)左补齐:
SELECT LPAD(ename, 10, '*') FROM emp;
RPAD(字段名,要多少位,补齐的字符)右补齐:
SELECT LPAD(ename, 10, '*') FROM emp;
TRIM('h' FROM '字段名'):截取字符
REPLACE('abcd', 'b', 'm'):替换字符
数字函数:
ROUND(待四舍五入的值, 保留小数点位数):四舍五入,ROUND函数第二个参数可省略
SELECT ROUND(56.187, 2) FROM DUAL; --结果为56.19
TRUNC:截断
MOD:求余
通用函数:
这些函数适用于任何数据类型,同时也适用于数据类型,同时也适用于空值
NVL(expr1, expr2):expr1是否为空,如果为空返回expr2,如果不为空返回expr1的值
SELECT ename, NVL(ngr, '没有领导'), deptno FROM enp;
--NGR 查找领导名,没有就为零
NVL2(expr1, expr2, expr3):expr不为NULL,返回expr2;为NULL,返回expr3(类似于三元运算符)
SELECT NVL2(Sal, 800, 300) FROM emp;
NULLIF(expr1, expr2):两个表达式相等返回空,不相等返回expr1;
COALESCE函数
COALESCE与NVL相比的优点在于COALESCE可以同时处理交替的多个值。
如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE。
SELECT ename,COALESCE(Sal, dept, 2000) FROM emp;
条件表达式
在SQL语句中使用IF-THEN-ELSE逻辑
CASE表达式
CASE 待匹配的值 WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
--给不同的部门调薪
eg:SELECT ename, deptno,
CASE deptno WHEN 10 THEN Sal *1.1
WHEN 20 THEN Sal *1.2
WHEN 30 THEN Sal *1.3
ELSE
Sal
END as 调整倍数后的工资
FROM emp;
DECODE函数(在需要使用IF-THEN-ELSE逻辑时):
DECODE(COL|expression, search1, result1,
[,search2, result2......]
[,default])
eg:SELECT ename, deptno, DECODE(deptno, 10, Sal*1.1, 20, Sal*1.2, 30, Sal*1.3 FROM emp);