DECODE函数与一系列嵌套的
IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i
个compare项匹配,就返回第i 个对应的value
。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL
compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare
值相同的数据类型,这个数据类型也是返回值的类型。
DECODE函数在实际开发中非常的有用
结合LPAD函数,如何使主键的值自动加1并在前面补0select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号from
tetdmis
eg:
select
decode(dir,1,0,1) from a1_interval
dir
的值是1变为0,是0则变为1 呵呵
比如我要查询某班男生和女生的数量分别是多少
通常我们这么写
select
count(*) from 表 where 性别 = 男;
select
count(*) from 表 where 性别 = 女;
要想显示到一起还要union一下,太麻烦了
用decode呢,只需要一句话
select
decode(性别,男,1,0),decode(性别,女,1,0) from 表