Answers:
coalesce
Oracle和SQL Server都支持该功能,nvl
并且与和基本上具有相同的功能isnull
。(有一些重要的区别,coalesce
可以接受任意数量的参数,并返回第一个非null的参数。for的返回类型isnull
与第一个参数的类型相匹配coalesce
,至少对于SQL Server而言,该返回类型不适用。)
COALESCE
,这有一个重要的好处NVL
:进行快捷方式评估,而NVL
始终评估两个参数。COALESCE(1,my_expensive_function)
与比较NVL(1,my_expensive_function)
。
COALESE()
功能很棒,您可以在MSDOC> COALESCE上阅读有关此功能的信息-该语法在Oracle上也适用。如果您的数据包含空字符串而不是NULL,则可能需要以下内容:COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField"
。
代替ISNULL()
使用NVL()
。
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL / SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
NVL2
如果要从中返回其他值,也可以使用以下方法field_to_check
:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
您可以使用条件if x is not null then...
。这不是功能。还有一个NVL()
函数,是一个很好的用法示例:NVL函数ref。
COALESCE
是ANSI,由Postgres,MySQL支持。