NULLIF
和COALESCE
函數(shù)在SQL中都是用于處理空值(NULL)的工具,但它們的工作方式和應用場景有所不同。
NULLIF
函數(shù)接受兩個參數(shù),如果這兩個參數(shù)的值相等,那么函數(shù)將返回NULL。否則,它將返回第一個參數(shù)。這個函數(shù)通常用于在兩個可能相等的值之間進行條件性的“轉換”,其中一個值在特定條件下被視為與另一個值“相同”(即相等),從而返回NULL以表示這種“相同”狀態(tài)。
例如:
SELECT NULLIF(10, 10) AS result; -- 返回NULL,因為10等于10
SELECT NULLIF(10, 20) AS result; -- 返回10,因為10不等于20
COALESCE
函數(shù)接受多個參數(shù),并返回第一個非NULL參數(shù)。如果所有參數(shù)都是NULL,那么函數(shù)將返回NULL。這個函數(shù)通常用于在多個可能為空的值之間選擇“首選”值。它按照參數(shù)在列表中出現(xiàn)的順序進行查找,并返回第一個非NULL值。
例如:
SELECT COALESCE(10, 20, 30) AS result; -- 返回10,因為10是非NULL值且是最先出現(xiàn)的
SELECT COALESCE(NULL, 20, 30) AS result; -- 返回20,因為20是非NULL值且是第二個出現(xiàn)的
SELECT COALESCE(NULL, NULL, 30) AS result; -- 返回30,因為30是非NULL值且是最后一個出現(xiàn)的
總結:
NULLIF
函數(shù)在兩個參數(shù)相等時返回NULL,否則返回第一個參數(shù)。它主要用于條件性地“轉換”兩個可能相等的值。COALESCE
函數(shù)返回列表中第一個非NULL參數(shù)。它主要用于在多個可能為空的值之間選擇“首選”值。