10

是否有与 Oracle 的 DECODE 函数等效的 ANSI SQL?

Oracle 的解码函数是 SQL 中的 IF-THEN-ELSE 构造。

4

4 回答 4

19

CASE 表达式是 ANSI SQL 方法,其中有 2 个变体,“simple”和“searched”:

1) 简单的 CASE 表达式:

CASE col WHEN 1 THEN 'One'
         WHEN 2 THEN 'Two'
         ELSE 'More'
         END

2) 搜索到的 CASE 表达式:

CASE WHEN col < 0 THEN 'Negative'
     WHEN col = 0 THEN 'Zero'
     ELSE 'Positive'
     END
于 2010-07-09T11:23:12.387 回答
3

请注意,Oracle DECODE 将 null 视为等于 null,而 CASE(和任何其他比较)则不会。

示例:如果 a 和 b 均为空值,则 Decode(a,b,1,0) 将返回 1。

只需运行这 2 个语句即可查看差异。

select case null when null then 'Y' else 'N' end dd from dual;
select decode(null, null, 'Y', 'N') dd from dual;
于 2018-10-09T09:13:31.000 回答
2
CASE WHEN a=1 THEN value1
     WHEN a=2 THEN value2
     ELSE default
END

SQL 案例语句语法?

于 2010-07-09T11:18:54.837 回答
0

加起来 null 可以在解码中进行比较,而如果不是。

于 2018-10-09T11:23:38.933 回答