条件函数
COALESCE()函数
适用于: DSQL, PSQL
语法:
COALESCE (exp1, exp2 ...expN)
表 8.63.COALESCE函数参数
参数 |
说明 |
exp1, exp2 ...expN |
任何兼容类型的表达式列表 |
说明:COALESCE 函数接受两个或多个参数,并返回第一个非 NULL 的值参数。如果所有参数的计算结果都为 NULL,则结果为 NULL。
结果类型:取决于输入。
示例:本示例从“Persons”表中选取"Nickname"。如果它恰好为 NULL,则继续"FirstName"。如果这也是 NULL,则使用“'Mr./Mrs.'”。最后,它添加了"LastName"。总而言之,它试图使用 全部可用数据尽可能用于组成非正式的"FullName"。请注意,此方案仅在以下情况下有效
缺少"Nickname"和"FirstName"实际上是 NULL:如果其中一个是空字符串,COALESCE 将愉快地将其返回给调用者。
select
coalesce (Nickname, FirstName, 'Mr./Mrs.') || ' ' || LastName
as FullName
from Persons
See also: IIF, NULLIF, CAST
DECODE()函数
适用于: DSQL, PSQL
语法:
DECODE(testexpr,
expr1, result1
expr2, result2 …]
[, defaultresult])
相当于 CASE 构造:
CASE testexpr
WHEN expr1 THEN result1
[WHEN expr2 THEN result2 …]
[ELSE defaultresult]
END
表 8.64. DECODE 函数参数
参数说明
testexpr 与表达式 expr1,expr2 ... exprN 进行比较的任何兼容类型的表达式,
expr1, expr2, ...exprN 任何兼容类型的表达式,与表达式进行比较
result1, result2, … resultN 任何类型的返回值
defaultresult 在不满足任何条件时返回的表达式
结果类型:变化
描述:DECODE 是所谓的“simple CASE”构造的快捷方式,其中给定的表达式是与许多其他表达式相比,直到找到匹配项。结果由列出的值决定,在匹配表达式之后。如果未找到匹配项,则返回默认结果(如果存在)。否则,NULL被返回。
谨慎
匹配是用“=”运算符完成的,所以如果为 NULL,它不会匹配任何 s,而不是即使是那些为NULL的。
例:
select name,
age,
decode( upper(sex),
'M', 'Male',
'F', 'Female',
'Unknown' ),
religion
from people
See also: CASE, Simple CASE
IIF()函数
适用于: DSQL, PSQL
语法:
IIF (condition, ResultT, ResultF)
表 8.65. IIF 函数参数
参数说明
condition 一个true/false值表达式
resultT 条件为 true 时返回的值
resultF 条件为 false 时返回的值
结果类型:取决于输入。
描述:IIF 采用三个参数。如果第一个参数的计算结果为 true,则返回第二个参数;否则第三个是返回。
•IIF可以比作类C语言中的三元“?:”运算符。
例:
select iif( sex = 'M', 'Sir', 'Madam' ) from Customers
备注:
IIF(Cond, Result1, Result2) 是“CASE WHEN Cond THEN Result1 ELSE Result2 END”的快捷方式。
See also: CASE, DECODE
MAXVALUE()函数
适用于: DSQL, PSQL
语法:
MAXVALUE (expr1 [, ... ,exprN ])
表 8.66. MAXVALUE 函数参数
参数 说明
expr1 … exprN 兼容类型的表达式列表
结果类型: 因输入而异 - 结果将与列表中的第一个表达式具有相同的数据类型()。
说明:返回数字、字符串或日期/时间表达式列表中的最大值。此函数完全支持任何长度和字符集的文本 BLOB。
• 如果一个或多个表达式解析为 NULL,则 MAXVALUE 返回 NULL。此行为不同于聚合函数最大值MAX.
例:
SELECT MAXVALUE(PRICE_1, PRICE_2) AS PRICE
FROM PRICELIST
See also: MINVALUE()
MINVALUE()函数
适用于: DSQL, PSQL
语法:
MINVALUE (expr1 [, ... , exprN ])
表8.67. MINVALUE 函数参数
参数 说明
expr1 … exprN 兼容类型的表达式列表
结果类型: 因输入而异 - 结果将与列表中的第一个表达式具有相同的数据类型()。
说明:返回数字、字符串或日期/时间表达式列表中的最小值。此函数完全支持任何长度和字符集的文本 BLOB。
• 如果一个或多个表达式解析为 NULL,则 MINVALUE 返回 NULL。此行为不同于聚合函数最小值MIN.
例:
SELECT MINVALUE(PRICE_1, PRICE_2) AS PRICE
FROM PRICELIST
See also: MAXVALUE
NULLIF()函数
适用于: DSQL, PSQL
语法:
NULLIF (, )
表8.68. NULLIF 函数参数
参数 说明
exp1 表达式
exp2 同兼容类型的表达式
描述:NULLIF返回第一个参数的值,除非它等于第二个参数。在这种情况下,为NULL返回。
结果类型:取决于输入。
例:
select avg( nullif(Weight, -1) ) from FatPeople
这将返回FatPeople中列出的人的平均体重,不包括那些权重体-1的人。因为AVG跳过NULL数据。假设-1表示该表中的“未知体重”。普通AVG(Weight)将包括-1体重,从而扭曲结果。
See also: COALESCE, DECODE, IIF, CASE
本文档中文版由海钛瑞OA办公系统研发团队翻译制作,转载请在开始处标明来自于http://www.hitai.com.欢迎交流。