温故而知新·Oracle《二》

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);
     
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页