计算给定表达式并返回指定值的函数。
DECODE(expr {,search,result}[,default])
expr
- 要解码的表达式。search
- 要与Expr进行比较的值。result
- Expr
匹配搜索时返回的值。default
- 可选-如果expr
与任何搜索都不匹配,则返回默认值。可以指定多个搜索和结果对,以逗号分隔。您可以指定一个默认值。DECODE
表达式(包括EXPR
、SEARCH
、RESULT
和DEFAULT
)中的最大参数数约为100
。搜索、结果和默认值可以从表达式派生。
为了计算DECODE
表达式,会逐个将expr
与每个搜索值进行比较:
expr
等于search
,则返回相应的结果。expr
不等于search
,则返回默认值,如果省略默认值,则返回NULL
。仅在将search
与Expr
进行比较之前计算每个search
,而不是在将所有search
与Expr
进行比较之前评估所有search
。因此,如果上一次搜索等于EXPR
,不会对搜索求值。
在DECODE
表达式中,将两个NULL
视为等效。如果expr
为NULL
,则将返回同样为NULL
的第一次搜索结果。
请注意,为了与Oracle兼容,支持解码。
DECODE
返回第一个结果参数的数据类型。如果无法确定第一个结果参数的数据类型,则DECODE
返回VARCHAR
。对于数值,DECODE
从所有可能的结果参数值返回最大长度、精度和小数位数。
如果结果和默认值的数据类型不同,则返回的数据类型是与所有可能的返回值最兼容的类型,即具有最高数据类型优先级的数据类型。例如,如果结果是整数,默认值是小数,则DECODE
返回一个带有数据类型数字的值。这是因为数字是与两者兼容的最高优先级的数据类型。
下面的例子将13
到19
岁的年龄“decodes”
为“Teen”
;
默认为“Adult”
:
SELECT Name,Age,DECODE(Age,
13,'Teen',14,'Teen',15,'Teen',16,'Teen',
17,'Teen',18,'Teen',19,'Teen',
'Adult') AS AgeBracket
FROM Sample.Person
WHERE Age > 12
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。