標籤:
在Sql Server中有三種方式對查詢結果中的NULL值進行替換。
如有下面的一張表:
我們可以通過自串連(Self-Join)的方式一張員工名和其對應的經理名的表:
SELECT E.[Name],M.[Name] FROM [tblEmployee] AS ELEFT JOIN [tblEmployee] AS MON E.ManagerId = M.EmployeeId
我們可以看到,Todd對應的Manger為NULL,這說明Todd應該是公司的最高層,他沒有經理。但是這樣顯示很不友好,我們希望如果Todd沒有經理,那麼他的經理名顯示為“No Mnager”,如:
文章開頭已經提到了,有三種方式可以替換查詢結果中的NULL值,下面我們分別介紹。
一)使用ISNULL()函數替換。
SELECT E.[Name],ISNULL(M.[Name],‘No Manager‘) FROM [tblEmployee] AS ELEFT JOIN [tblEmployee] AS MON E.ManagerId = M.EmployeeId
ISNULL()函數的第一個參數如果為NULL值,那麼返回結果為第二個參數。
二)使用COALESCE()函數
SELECT E.[Name],COALESCE(M.[Name],‘No Manager‘) FROM [tblEmployee] AS ELEFT JOIN [tblEmployee] AS MON E.ManagerId = M.EmployeeId
大家可以看到,在我們的這個例子中ISNULL函數和COALESCE函數的使用方式是一樣的。其實這兩個函數是有區別的,其具體區別在接下來的文章中會介紹。
三)使用CASE WHEN THEN ELSE END語句
SELECT E.[Name],CASE WHEN M.[Name] IS NULL THEN ‘No Manager‘ ELSE M.[Name] END FROM [tblEmployee] AS ELEFT JOIN [tblEmployee] AS MON E.ManagerId = M.EmployeeId
這個語句有點像C#等進階語言的if else if else if else... 語句。如果WHEN後的條件成立,則會去到THEN語句,反之去到ELSE語句。在SQL中可以有很多個WHEN THEN ELSE串聯起來去作為檢測條件。
13 三種方式替換SQL Server中的NULL值(Different ways to replace NULL in Sql Server)