溫馨提示×

nullif與coalesce函數(shù)的區(qū)別

小樊
81
2024-10-10 15:41:55
欄目: 編程語言

NULLIFCOALESCE函數(shù)在SQL中都是用于處理空值(NULL)的工具,但它們的工作方式和應用場景有所不同。

  1. NULLIF函數(shù)

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
  1. COALESCE函數(shù)

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

0