是否存在与Oracle的DECODE函数等效的ANSI SQL?
Oracle的解码函数是SQL中的IF-THEN-ELSE结构。
答案 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
答案 2 :(得分:2)
请注意,Oracle DECODE将null视为等于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可以在解码中进行比较,但如果不是这样的话。