zoukankan      html  css  js  c++  java
  • Oracle CASE WHEN 用法介绍

    1. CASE WHEN 表达式有两种形式

    复制代码
    --简单Case函数  

    CASE sex
    WHEN '1' THEN '男'
    WHEN '2' THEN '女'
    ELSE '其他' END

    --Case搜索函数

    CASE
    WHEN sex = '1' THEN '男'
    WHEN sex = '2' THEN '女'
    ELSE '其他' END
    复制代码

    2. CASE WHEN 在语句中不同位置的用法

    2.1 SELECT CASE WHEN 用法

    复制代码
    SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1为男生,2位女生*/
    ELSE NULL
    END) 男生数,
    COUNT (CASE WHEN sex = 2 THEN 1
    ELSE NULL
    END) 女生数
    FROM students GROUP BY grade;
    复制代码

    2.3 WHERE CASE WHEN 用法

    复制代码
    SELECT T2.*, T1.*
    FROM T1, T2
    WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
    T1.SOME_TYPE LIKE 'NOTHING%'
    THEN 1
    WHEN T2.COMPARE_TYPE != 'A' AND
    T1.SOME_TYPE NOT LIKE 'NOTHING%'
    THEN 1
    ELSE 0
    END) = 1
    复制代码

    2.4 GROUP BY CASE WHEN 用法

    复制代码
    SELECT  
    CASE WHEN salary <= 500 THEN '1'
    WHEN salary > 500 AND salary <= 600 THEN '2'
    WHEN salary > 600 AND salary <= 800 THEN '3'
    WHEN salary > 800 AND salary <= 1000 THEN '4'
    ELSE NULL END salary_class, -- 别名命名
    COUNT(*)
    FROM Table_A
    GROUP BY
    CASE WHEN salary <= 500 THEN '1'
    WHEN salary > 500 AND salary <= 600 THEN '2'
    WHEN salary > 600 AND salary <= 800 THEN '3'
    WHEN salary > 800 AND salary <= 1000 THEN '4'
    ELSE NULL END;
    复制代码

    3.关于IF-THEN-ELSE的其他实现

    3.1 DECODE() 函数

    select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown')
    from employees;

    貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。

    3.2 在WHERE中特殊实现

    SELECT T2.*, T1.*
    FROM T1, T2
    WHERE (T2.COMPARE_TYPE = 'A' AND T1.SOME_TYPE LIKE 'NOTHING%')
    OR
    (T2.COMPARE_TYPE != 'A' AND T1.SOME_TYPE NOT LIKE 'NOTHING%')

    这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。

    如果您觉得文章有用,也可以给水发个微信小额红包鼓励鼓励!!!

  • 相关阅读:
    codeforces 980A Links and Pearls
    zoj 3640 Help Me Escape
    sgu 495 Kids and Prizes
    poj 3071 Football
    hdu 3853 LOOPS
    hdu 4035 Maze
    hdu 4405 Aeroplane chess
    poj 2096 Collecting Bugs
    scu 4444 Travel
    zoj 3870 Team Formation
  • 原文地址:https://www.cnblogs.com/soundcode/p/5549901.html
Copyright © 2011-2022 走看看