【发布时间】:2011-04-01 04:24:51
【问题描述】:
在 SQL Server 中,我们可以键入 IsNull() 来确定字段是否为空。 PL/SQL中有没有等价的函数?
【问题讨论】:
标签: sql-server oracle tsql plsql
在 SQL Server 中,我们可以键入 IsNull() 来确定字段是否为空。 PL/SQL中有没有等价的函数?
【问题讨论】:
标签: sql-server oracle tsql plsql
coalesce 在 Oracle 和 SQL Server 中均受支持,其功能与 nvl 和 isnull 基本相同。 (有一些重要的区别,coalesce 可以接受任意数量的参数,并返回第一个非空参数。isnull 的返回类型与第一个参数的类型匹配,coalesce 不是这样,至少在 SQL Server 上。)
【讨论】:
COALESCE 是 ANSI,由 Postgres、MySQL 支持...唯一需要注意的是它的执行速度不一定像原生语法一样快。
COALESCE,与 NVL 相比有一个重要的好处:它执行快捷方式评估,而 NVL 始终评估两个参数。比较 COALESCE(1,my_expensive_function) 和 NVL(1,my_expensive_function)。
COALESE() 函数很棒,你可以在MSDOC> COALESCE 上阅读它——同样的语法也适用于Oracle。如果你的数据有空字符串而不是 NULLS,你可能需要这样的东西:COALESCE(TRIM(Tbl.myField1), TRIM(Tbl.myField2)) AS "myNewField".
用NVL()代替ISNULL()。
T-SQL:
SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
PL/SQL:
SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
【讨论】:
如果你想从field_to_check返回其他值,也可以使用NVL2:
NVL2( field_to_check, value_if_NOT_null, value_if_null )
【讨论】:
您可以使用条件if x is not null then...。这不是一个函数。还有NVL() 函数,这里是一个很好的用法示例:NVL function ref。
【讨论】: