Oracle SQL语句 之 decode函数

定义

decode函数能够比较输入的表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。

语法

decode(expr1,expr2,expr3,[expr4])
1)如果expr1 = expr2,decode函数返回expr3表达式的值;
2)如果expr1 != expr2,decode函数返回expr4表达式的值,如果expr4未指定,则返回null。

返回值类型

字符串

举例

场景1:指定默认值

未加入函数

select * from test

file

加入函数

select name,decode(score,80,95,90) as score,subject from test

file

场景2:行转列

未加入函数

select * from test

file

加入函数

select name,
       decode(subject, '数学', score, null) as 数学,
       decode(subject, '英语', score, null) as 英语,
       decode(subject, '语文', score, null) as 语文
  from test

file
小技巧:如何去除结果中的空值

select name,
       sum(decode(subject, '数学', score, null)) as 数学,
       sum(decode(subject, '英语', score, null)) as 英语,
       sum(decode(subject, '语文', score, null)) as 语文
  from test
  group by name

file

Related Posts