【问题标题】:What is the Oracle equivalent of SQL Server's IsNull() function?SQL Server IsNull() 函数的 Oracle 等效项是什么?
【发布时间】:2011-04-01 04:24:51
【问题描述】:

在 SQL Server 中,我们可以键入 IsNull() 来确定字段是否为空。 PL/SQL中有没有等价的函数?

【问题讨论】:

    标签: sql-server oracle tsql plsql


    【解决方案1】:

    coalesce 在 Oracle 和 SQL Server 中均受支持,其功能与 nvlisnull 基本相同。 (有一些重要的区别,coalesce 可以接受任意数量的参数,并返回第一个非空参数。isnull 的返回类型与第一个参数的类型匹配,coalesce 不是这样,至少在 SQL Server 上。)

    【讨论】:

    • +1: COALESCE 是 ANSI,由 Postgres、MySQL 支持...唯一需要注意的是它的执行速度不一定像原生语法一样快。
    • +1 for 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".
    【解决方案2】:

    NVL()代替ISNULL()

    T-SQL:

    SELECT ISNULL(SomeNullableField, 'If null, this value') FROM SomeTable
    

    PL/SQL:

    SELECT NVL(SomeNullableField, 'If null, this value') FROM SomeTable
    

    【讨论】:

      【解决方案3】:

      如果你想从field_to_check返回其他值,也可以使用NVL2

      NVL2( field_to_check, value_if_NOT_null, value_if_null )
      

      用法:ORACLE/PLSQL: NVL2 FUNCTION

      【讨论】:

        【解决方案4】:

        您可以使用条件if x is not null then...。这不是一个函数。还有NVL() 函数,这里是一个很好的用法示例:NVL function ref

        【讨论】:

          猜你喜欢
          • 2010-09-15
          • 2020-09-24
          • 2012-05-30
          • 2019-09-01
          • 2011-06-26
          • 2016-12-22
          • 2010-11-19
          • 1970-01-01
          • 2013-05-12
          相关资源
          最近更新 更多