Oracle NULLIF() 函数使用指南

Oracle NULLIF() 是一个内置函数,它比较两个参数,如果两个参数相等就返回 NULL,否则返回第一个参数。

Oracle NULLIF() 语法

这里是 Oracle NULLIF() 函数的语法:

NULLIF(expr1, expr2)

NULLIF(expr1, expr2) 函数在逻辑上等同于这个 CASE 表达式:CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

参数

expr1

必需的。一个值或者表达式。

expr2

必需的。另一个值或者表达式。

如果两个参数都是数字数据类型,则 Oracle 数据库确定具有较高数字优先级的参数,隐式地将另一个参数转换为该数据类型,然后返回该数据类型。如果参数不是数字,那么它们必须是相同的数据类型,否则 Oracle 会返回错误。

返回值

Oracle NULLIF() 函数比较两个参数,如果两个参数相等就返回 NULL,否则返回第一个参数。

如果两个参数都为 NULLNULLIF() 将返回一个错误。

Oracle NULLIF() 示例

这里有几个展示了 Oracle NULLIF() 函数用法的示例。

基本用法

SELECT
    NULLIF(1, 1),
    NULLIF(1, 2)
FROM dual;

输出:

   NULLIF(1,1)    NULLIF(1,2)
______________ ______________
          NULL              1

下面的语句使用 CASE 表达式实现:

SELECT
    CASE WHEN 1 = 1 THEN NULL ELSE 1 END,
    CASE WHEN 1 = 2 THEN NULL ELSE 1 END
FROM dual;

输出:

   CASEWHEN1=1THENNULLELSE1END    CASEWHEN1=2THENNULLELSE1END
______________________________ ______________________________
                          NULL                              1

NULL 参数

如果两个参数都为 NULLNULLIF() 将返回一个错误。

SET NULL 'NULL';
SELECT
    NULLIF(NULL, NULL)
FROM dual;

输出:

SQL Error: ORA-00932: inconsistent datatypes: expected - got CHAR 

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle NULLIF() 是一个内置函数,它比较两个参数,如果两个参数相等就返回 NULL,否则返回第一个参数。