> 文章列表 > sql decode函数

sql decode函数

sql decode函数

介绍decode函数

SQL中的decode函数是一个非常有用的函数,它的作用是在查询结果中将某些特定的值替换成指定的值。该函数有多个参数,可以根据需要来使用,函数的语法如下:

decode(expression, value1, result1, value2, result2, .... value_n, result_n, default_value)

decode函数的第一个参数expression是要被解码的表达式,后面的参数value1、result1、value2、result2、value_n、result_n都是一对一对的出现,它们依次代表了每个要被替换的值和替换成的结果。最后一个default_value是指在expression没有匹配任何一个值的时候所返回的结果,默认情况下返回NULL。

使用decode函数实现条件判断

我们可以使用SQL中的decode函数来实现一些简单的条件判断功能。例如,我们可以将查询结果集中的性别代码“M”和“F”替换成“男”和“女”:

SELECT name, decode(sex, 'M', '男', 'F', '女') AS gender FROM student

述语句中,我们通过decode函数将“M”替换成“男”,将“F”替换成“女”,然后在查询结果中显示“gender”列。

使用decode函数实现表字段自定义别名

SQL中的decode函数还可以被用来实现表字段的自定义别名功能。例如,下面的语句会将“name”字段替换成“姓名”:

SELECT decode('name', 'name', '姓名') AS 'name', score FROM student

上述语句中,我们直接将“name”作为expression参数传递给decode函数,然后将第二个参数设为“name”,第三个参数设为“姓名”,这样就可以替换掉“name”字段,将其显示成“姓名”。

使用decode函数实现数值转换

除了可以用于字符串的条件判断和自定义别名之外,SQL中的decode函数还可以用于实现一些数值转换功能。例如,我们可以将成绩低于60分的学生替换成“不及格”,将高于等于60分的学生替换成“及格”:

SELECT name, decode(score, 60, '及格', '不及格') AS result FROM student

上述语句中,我们先将“name”列作为查询结果中的一个字段,然后使用decode函数将分数小于60的替换成“不及格”,大于等于60的替换成“及格”,将结果显示为“result”列。

使用decode函数实现多重条件判断

SQL中的decode函数还可以实现多个条件判断,只需要在函数参数中添加更多的值和结果即可。例如,我们不仅可以将分数小于60的学生替换成“不及格”,还可以将分数在60到80之间的学生替换成“良好”,将分数大于80的学生替换成“优秀”:

SELECT name, decode(score, 60, '及格', 80, '良好', '优秀') AS result FROM student

上述语句中,我们在函数参数中添加了两组值和结果,用逗号分隔开,最后将结果显示为“result”列。