NULLIF
和COALESCE
函数在SQL中都是用于处理空值(NULL)的工具,但它们的工作方式和应用场景有所不同。
NULLIF
函数接受两个参数,如果这两个参数的值相等,那么函数将返回NULL。否则,它将返回第一个参数。这个函数通常用于在两个可能相等的值之间进行条件性的“转换”,其中一个值在特定条件下被视为与另一个值“相同”(即相等),从而返回NULL以表示这种“相同”状态。
例如:
SELECT NULLIF(10, 10) AS result; -- 返回NULL,因为10等于10
SELECT NULLIF(10, 20) AS result; -- 返回10,因为10不等于20
COALESCE
函数接受多个参数,并返回第一个非NULL参数。如果所有参数都是NULL,那么函数将返回NULL。这个函数通常用于在多个可能为空的值之间选择“首选”值。它按照参数在列表中出现的顺序进行查找,并返回第一个非NULL值。
例如:
SELECT COALESCE(10, 20, 30) AS result; -- 返回10,因为10是非NULL值且是最先出现的
SELECT COALESCE(NULL, 20, 30) AS result; -- 返回20,因为20是非NULL值且是第二个出现的
SELECT COALESCE(NULL, NULL, 30) AS result; -- 返回30,因为30是非NULL值且是最后一个出现的
总结:
NULLIF
函数在两个参数相等时返回NULL,否则返回第一个参数。它主要用于条件性地“转换”两个可能相等的值。COALESCE
函数返回列表中第一个非NULL参数。它主要用于在多个可能为空的值之间选择“首选”值。