函数介绍
decode() 是SQL中非常强大的条件表达式函数之一。
它被广泛用于在查询中测试和显示一个字段的不同值。
decode()函数本质上是一个语言结构,它接受若干个条件和结果,对于输入数据的每一个值,按照顺序依次判断是否满足条件,如果满足,则返回对应的结果。
函数语法
decode() 函数的语法如下:
decode( expression ,search ,result [, search ,result]... [, default] )
函数参数:
expression:需要测试的表达式或字段,不能为null。search:选择一个值来测试expression的值,不能为null。result:如果expression的值与search的值相等,则返回的结果。result可以是任意的数据类型,包括null。default:可选的。如果所有的选择都不满足,则返回此项的值。
使用示例1:
例如,下面的示例演示了如何使用 decode() 函数来将一个字段的值翻译成英文:
SELECT name, decode(gender, 'M', 'Male', 'F', 'Female', 'Unknown') as new_gender FROM employees;
结果如下:
| name | new_gender |
|---|---|
| Tom | Male |
| Alice | Female |
| John | Unknown |
| Mary | Female |
| Bill | Male |
| Michael | Male |
| Jennifer | Female |
| Tim | Unknown |
在这个例子中,我们已经使用 decode() 函数做了以下事情:
- 检查
gender列的值。 - 如果它是
M,则该函数返回Male。 - 如果它是
F,则该函数返回Female。 - 如果它是其他任何内容,则该函数返回
Unknown。 - 结果存储在一个名为
new_gender的新列中。
使用示例2:
下面是另一个示例,它展示了如何使用 decode() 函数,检查不同日期之间的时间差:
SELECT decode((sysdate - hire_date) > 1825, 1, 'Yes', 0, 'No') as five_years FROM employees;
结果如下:
| five_years |
|---|
| Yes |
| No |
| Yes |
| No |
| Yes |
| Yes |
| Yes |
| No |
在这个例子中,我们已经使用 decode() 函数做了以下事情:
- 检查一个员工与公司续约是否超过了五年。
- 如果超过了五年,则该函数返回
Yes。 - 如果没有超过五年,则该函数返回
No。 - 结果存储在一个名为
five_years的新列中。
总结
decode() 函数是 SQL 中非常强大的一个函数,可以用于实现很多复杂的条件语句。在使用时,需要注意:
- 参数
expression,search以及result之间的数目必须一致; - 在没有匹配的情况下,如果没有默认返回值,该函数将返回
null; decode()函数只能在Oracle数据库中使用,如果在其他数据库中使用相似的功能,请使用CASE表达式。

© 版权声明
THE END



















暂无评论内容