数据仓库服务 GAUSSDB(DWS)-条件表达式函数:nullif(expr1, expr2)

时间:2023-11-10 17:34:09

nullif(expr1, expr2)

描述:当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。

nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。

示例:

1
2
3
4
5
SELECT nullif('hello','world');
 nullif 
--------
 hello
(1 row)

备注:

如果两个参数的数据类型不同,则:

  • 两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如:
    1
    2
    3
    4
    5
    SELECT nullif('1234'::VARCHAR,123::INT4);
     nullif 
    --------
       1234
    (1 row)
    
    1
    2
    SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE);
    ERROR:  invalid input syntax for type timestamp: "1234"
    
  • 两种数据类型之间不存在隐式转换,则返回错误 。如:
    1
    2
    3
    4
    5
    SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE);
    ERROR:  operator does not exist: boolean = timestamp without time zone
    LINE 1: SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE) FROM DUAL;
    ^
    HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
    
support.huaweicloud.com/sqlreference-dws/dws_06_0050.html