添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
不拘小节的排球  ·  python 读取txt ...·  1 月前    · 
爱搭讪的开水瓶  ·  CThreadPool 类 | ...·  1 年前    · 
冷冷的单杠  ·  python ...·  1 年前    · 

在「 如何找出欄位值是 NULL 的資料 」,已經討論過要如何找出 NULL 值的資料。這次要分享的是讓 NULL 值的資料,不要顯示為 NULL,而是改以其他文字來取代。
Microsoft SQL Server 提供一個 ISNULL 函數,可以讓我們取代 NULL 值,其語法如下:

ISNULL(陳述式1, 陳述式2)

當「陳述式1」的結果是 NULL 時,就傳回「陳述式2」的值,否則就會傳回「陳述式1」的值。例如,下面的程式碼,表示找出「產品編號」小於 325 的產品,當「顏色」欄位的值是 NULL 時,會改用「未知」來顯示:

USE AdventureWorks
SELECT ProductID 產品編號, ISNULL(Color, '未知') 顏色
FROM Production.Product
WHERE ProductID < 325
ORDER BY ProductID

執行結果:

既然分享了如何使用 ISNULL 函數,就順便說一說跟它很相似的另外一個函數:NULLIF,其使用的語法為:

NULLIF(陳述式1, 陳述式2)

當「陳述式1」的結果與「陳述式2」的結果相等時,就會傳回 NULL 值,否則就會傳回「陳述式1」的值。

例如下面的程式碼,表示當找出「產品編號」是 325 之前的產品,並使用 NULLIF 判斷「製造代碼」與「成品代碼」是否相同:

USE AdventureWorks
SELECT ProductID 產品編號, MakeFlag 製造代碼, FinishedGoodsFlag 成品代碼, 
   NULLIF(MakeFlag, FinishedGoodsFlag) 製造代碼與成品代碼是否相同
FROM Production.Product
WHERE ProductID < 325
ORDER BY ProductID

執行結果:

不知道大家有沒有發現到:如果比較的結果為真,NULLIF 就會傳回 NULL,而 ISNULL 卻傳回非 NULL 的值(從語法來看,就是傳回「陳述式2」的值)。這就是這兩個函數最大的差異!