赞
踩
从 Oracle 9i 开始,可以在 Oracle / PLSQL 的 SQL 语句中使用 CASE
语句,实现类似于 IF-THEN-ELSE 功能。
Oracle / PLSQL 中 CASE
语句的语法为:
CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
WHEN condition_n THEN result_n
ELSE result
END
参数说明:
WHEN
的
condition_*
条件值进行比较。
CASE
语句将返回结果,忽略后续的条件比较。
condition_*
条件为真时返回的值。这些结果的数据类型必须相同。
注意:CASE
语句中最多可以进行 255 次比较。每个 WHEN ... THEN
子句被认为是 2 个比较。
假设我们想通过一条 SQL 语句构造出符合 Select2 的数据源,该数据为某用户已分配的角色列表:
SELECT r.ID AS id, r.ROLE_NAME AS text,
CASE
WHEN r.ID IN (SELECT r.ID AS id
FROM ROLE r
JOIN USER_ROLE u_r ON u_r.ROLE_ID = r.ID
WHERE r.DELETED = 0 AND u_r.DELETED = 0 AND u_r.USER_ID = '05c37a7d537746ee96cd54441b0a849a') THEN 'true'
ELSE 'false'
END AS selected
FROM ROLE r
WHERE r.DELETED = 0;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。