適用版本: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/

+%E5%87%BD%E6%95%B8%E4%BE%86%E9%80%A3%E6%8E%A5%E8%B3%87%E6%96%99.png)
+%E5%8E%BB%E4%B8%B2%E9%80%A3%E6%9C%89+NULL+%E5%80%BC%E7%9A%84%E8%B3%87%E6%96%99%E8%A1%8C.png)
+%E5%87%BD%E6%95%B8%EF%BC%8C%E9%80%A3%E6%8E%A5%E5%A4%9A%E5%80%8B%E8%B3%87%E6%96%99%E8%A1%8C%E7%9A%84%E8%B3%87%E6%96%99.png)
+%E5%87%BD%E6%95%B8.png)

沒有留言:
張貼留言