定义
decode函数能够比较输入的表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
语法
decode(expr1,expr2,expr3,[expr4])
1)如果expr1 = expr2,decode函数返回expr3表达式的值;
2)如果expr1 != expr2,decode函数返回expr4表达式的值,如果expr4未指定,则返回null。
返回值类型
字符串
举例
场景1:指定默认值
未加入函数
select * from test
加入函数
select name,decode(score,80,95,90) as score,subject from test
场景2:行转列
未加入函数
select * from test
加入函数
select name,
decode(subject, '数学', score, null) as 数学,
decode(subject, '英语', score, null) as 英语,
decode(subject, '语文', score, null) as 语文
from test
小技巧:如何去除结果中的空值
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