2016年11月2日 星期三

[MS SQL] [T-SQL] ISNULL Function

遇到就筆記一下...


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


-- 使用 ISNULL 函數,用 0 來取代所有 NULL 項目
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Northwind..Products

以下轉貼自:http://sharedderrick.blogspot.tw/2012/06/t-sql-isnull.html

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 函數

?
1
2
3
4
5
6
7
8
9
10
11
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- 建立資料表:tbAggs
USE tempdb
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbAggs]') AND type in (N'U'))
<span class="Apple-tab-span" style="white-space: pre;"> </span>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_查詢資料表內容


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

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


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

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


?
1
2
3
4
-- 加入 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

沒有留言:

張貼留言