Oracle DECODE的标准SQL替代方案

时间:2010-07-09 11:15:12

标签: sql oracle ansi-sql

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

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

4 个答案:

答案 0 :(得分:16)

CASE表达式是ANSI SQL方法,其中有两个类型,“简单”和“搜索”:

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

答案 1 :(得分:2)

CASE WHEN a=1 THEN value1
     WHEN a=2 THEN value2
     ELSE default
END

SQL Case Statement Syntax?

答案 2 :(得分:2)

请注意,Oracle DECODE将n​​ull视为等于null,而CASE(以及任何其他比较)则不这样做。

示例:如果a和b均为空,则解码(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;

答案 3 :(得分:0)

将其加为null可以在解码中进行比较,但如果不是这样的话。