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參數。它主要用于在多個可能為空的值之間選擇“首選”值。