发布时间:2026-09-28 19:13:35 浏览次数:2
介绍
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 表达式。