首页 > 数据库 > Oracle > 转载:Oracle 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
>
>SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;
>
>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
>
>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;
>
select decode(sex, "M", "Male", "F", "Female", "Unknown")
from employees;
貌似只要Oracle供给该函数,而且没有撑持ANSI SQL,语法上也没CASE WHEN浑晰,个人没有推荐操纵。
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%")
那种方法也是在非凡状态下操纵,要多重视逻辑,没有要弄错。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22906314/viewspace-1115158/ ,如需转载,请注明出处,否则将追究法律责任。