搜尋本站文章

2012-06-26

SQL Server 2012 :認識 CONCAT 字串函數


適用版本:SQL Server 2012。

CONCAT 字串函數,可以用來連接多項資料,回傳字串類型。




請參考以下的範例程式碼:

EX1:認識 CONCAT() 函數


-- 錯誤:資料類型不相容
SELECT N'伺服器目前的時間是:'+ SYSDATETIME()
GO
/*
回傳的錯誤訊息:
訊息 402,層級 16,狀態 1,行 1
add 運算子中的資料類型 nvarchar 和 datetime2 不相容。
*/


-- 01_遭遇到錯誤



-- 使用 CONCAT() 函數來連接資料
SELECT CONCAT(N'伺服器目前的時間是:', SYSDATETIME())
GO


-- 02_使用 CONCAT() 函數來連接資料




EX2:連接多個資料行的資料

-- 僅是使用 + (加號) 去串連有 NULL 值的資料行
USE Northwind
GO
SELECT CustomerID, City, Region, Country,
 City+ ', ' + Region + ', ' + Country N'地區' 
FROM dbo.Customers
GO


-- 03_僅是使用 + (加號) 去串連有 NULL 值的資料行



-- 使用 CONCAT() 函數,連接多個資料行的資料
-- 請留意:資料行 Region 部分是 NULL
SELECT CustomerID, City, Region, Country,
 CONCAT(City, ', ' + Region, + ', ' + Country) N'地區' 
FROM dbo.Customers
GO


-- 04_使用 CONCAT() 函數,連接多個資料行的資料,有包含 NULL



-- 若是改用 ISNULL() 函數
SELECT CustomerID, City, Region, Country,
 City + ', ' + ISNULL(Region,'') + ', ' + Country N'地區'
FROM dbo.Customers
GO

-- 若是改用 COALESCE() 函數
SELECT CustomerID, City, Region, Country,
 City + ', ' + COALESCE(Region,'') + ', ' + Country N'地區'
FROM dbo.Customers
GO


-- 05_若是改用 ISNULL() 函數





認識 CONCAT (Transact-SQL)

傳回串連兩個以上之字串值的結果字串。

語法:


CONCAT ( string_value1, string_value2 [, string_valueN ] )


CONCAT 會採用可變數量的字串引數,並將其連成單一字串。
其至少需要兩個輸入值,否則會引發錯誤。

所有引數皆會以隱含方式轉換為字串類型,然後再行串連。
Null 值以隱含方式轉換為空白字串。 如果所有引數都是 Null,會傳回類型為 varchar(1) 的空白字串。

隱含轉換成字串會遵循現有的資料類型轉換規則。




參考資料

CONCAT (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/hh231515

T-SQL:認識 COALESCE() 函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-coalesce.html

T-SQL:認識 COALESCE() 函數,補充範例
http://sharedderrick.blogspot.tw/2012/06/t-sql-coalesce_14.html

T-SQL:認識 ISNULL 函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-isnull.html

SQL SERVER – Denali – String Function – CONCAT() – A Quick Introduction
http://blog.sqlauthority.com/2011/09/16/sql-server-denali-string-function-concat-a-quick-introduction/