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这种写法更有逻辑性,更像是编程吧。
|