源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

oracle case when 语句的用法详解

  • 时间:2022-03-24 05:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:oracle case when 语句的用法详解
[b]1. CASE WHEN 表达式有两种形式 [/b]
[u]复制代码[/u] 代码如下:
--简单Case函数  CASE sex  WHEN '1' THEN '男'  WHEN '2' THEN '女'  ELSE '其他' END  --Case搜索函数  CASE WHEN sex = '1' THEN '男'  WHEN sex = '2' THEN '女'  ELSE '其他' END 
[b]2. CASE WHEN 在语句中不同位置的用法 2.1 SELECT CASE WHEN 用法 [/b]
[u]复制代码[/u] 代码如下:
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;
[b]2.2 WHERE CASE WHEN 用法 [/b]
[u]复制代码[/u] 代码如下:
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
[b]2.3 GROUP BY CASE WHEN 用法 [/b]
[u]复制代码[/u] 代码如下:
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; 
[b]3.关于IF-THEN-ELSE的其他实现 3.1 DECODE() 函数 [/b]
[u]复制代码[/u] 代码如下:
select decode(sex, 'M', 'Male', 'F', 'Female', 'Unknown') from   employees;
貌似只有Oracle提供该函数,而且不支持ANSI SQL,语法上也没CASE WHEN清晰,个人不推荐使用。 [b]3.2 在WHERE中特殊实现 [/b]
[u]复制代码[/u] 代码如下:
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%')
这种方法也是在特殊情况下使用,要多注意逻辑,不要弄错。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部