搜尋本站文章

2012-06-08

SQL Server:認識 ISNULL 函數


ISNULL 函數:以指定的取代值來取代 NULL。

語法:
ISNULL ( check_expression , replacement_value )

check_expression
這是要檢查 NULL 的運算式。check_expression 可以是任何類型。

replacement_value
這是 check_expression 是 NULL 時所傳回的運算式。replacement_value 必須是能夠隱含地轉換成 check_expresssion 類型的類型。


請參考以下的範例程式碼



EX1. 認識 ISNULL 函數

USE Northwind
GO
--
SELECT CustomerID, City, Region, Country
FROM Customers
GO

-- 使用 ISNULL 函數,用 N/A 字串來取代所有 NULL 項目
SELECT CustomerID, City, ISNULL(Region, 'N/A') Region, Country
FROM Customers
GO

-- 01_使用 ISNULL 函數,用 NA 字串來取代所有 NULL 項目




EX2. 彙總函數與 NULL


-- 建立資料表:tbAggs
USE tempdb
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbAggs]') AND type in (N'U'))
 DROP TABLE [dbo].[tbAggs]
GO
CREATE TABLE tbAggs
(rid int, sales int)
GO
INSERT tbAggs VALUES(1,10),(2,20)
INSERT tbAggs(rid) VALUES(3)
GO
-- 查詢資料表內容
SELECT * FROM tbAggs
GO

-- 02_查詢資料表內容


-- 使用 SUM 函數、AVG 函數
SELECT SUM(sales) N'總和', AVG(sales) N'平均值'
FROM tbAggs
GO

-- 03_使用 SUM 函數、AVG 函數


-- 使用 ISNULL 函數,用 0 來取代所有 NULL 項目
SELECT rid, ISNULL(sales, 0) 'sales'
FROM tbAggs
GO

-- 04_使用 ISNULL 函數,用 0 來取代所有 NULL 項目


-- 加入 AVG 函數,搭配使用 ISNULL 函數
SELECT AVG(ISNULL(sales, 0)) N'平均值'
FROM tbAggs
GO

-- 05_加入 AVG 函數,搭配使用 ISNULL 函數




參考資料

ISNULL (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms184325.aspx

COALESCE (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms190349(v=sql.110).aspx