举例总结oracle中case when then及decode用法

decode函数:

decode(条件,值1,返回值1,值2,返回值2,.......,缺省值)

case...when...then:

-- 写法一:
case(条件)
when 值1 then 返回值1
when 值2 then 返回值2
else 缺省值
-- 写法二:
case when 条件1 then 返回值1
when 条件2 then 返回值2
else 缺省值
end;

例子:假如有这样一个例子,取得当前日期的月份,如果现在是9月份,那么就返回“开学季”,如果是11月份,就返回“要过生日了”,如果不是9月和11月,就返回缺省值“不知道干嘛”,实现代码如下:

-- 一个简单的decode例子
SELECT DECODE(EXTRACT(MONTH FROM SYSDATE),
              9,
              '开学季',
              11,
              '要过生日了',
              '不知道干嘛')
  FROM DUAL;
-- 一个简单的case...when...then...的例子,写法一:
SELECT (CASE (EXTRACT(MONTH FROM SYSDATE))
         WHEN 9 THEN
          '开学季'
         WHEN 11 THEN
          '要过生日了'
         ELSE
          '不知道干嘛'
       END)
  FROM DUAL;
-- 一个简单的case...when...then...的例子,写法二:
SELECT (CASE
         WHEN EXTRACT(MONTH FROM SYSDATE) = 9 THEN
          '开学季'
         WHEN EXTRACT(MONTH FROM SYSDATE) = 11 THEN
          '要过生日了'
         ELSE
          '不知道干嘛'
       END)
  FROM DUAL;

上面的例子非常简单,话说我就是老爱忘,总是写着写着就忘记规则了,好记性不如烂笔头,相比于decode,我更偏爱case,虽然case的用法一点都不简洁,可能只是因为case...when...then这种写法更有逻辑性,更像是编程吧。

本文标题:举例总结oracle中case when then及decode用法

本文链接:http://yedward.net/?id=60

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章