適用版本: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/
沒有留言:
張貼留言