字符串表達式中的運算符,將兩個或多個字符或二進制字符串、列或字符串和列名的組合串聯(lián)到一個表達式中(字符串運算符)。
expression + expression
expression
是字符和二進制數(shù)據(jù)類型分類中任何數(shù)據(jù)類型(image、ntext 或 text 數(shù)據(jù)類型除外)的任何有效 Microsoft® SQL Server™ 表達式。兩個表達式都必須具有相同的數(shù)據(jù)類型,或者其中的一個表達式必須能夠隱式地轉(zhuǎn)換為具有另一種數(shù)據(jù)類型的表達式。
在二進制字符串連同任何字符串與二進制字符串之間進行串聯(lián)時,必須使用字符數(shù)據(jù)的顯式轉(zhuǎn)換。下面的示例顯示了對于二進制串聯(lián),何時必須使用 CONVERT(或 CAST),何時不需要使用 CONVERT(或 CAST)。
DECLARE @mybin1 binary(5), @mybin2 binary(5)
SET @mybin1 = 0xFF
SET @mybin2 = 0xA5
-- No CONVERT or CAST function is necessary because this example
-- concatenates two binary strings.
SELECT @mybin1 + @mybin2
-- A CONVERT or CAST function is necessary because this example
-- concatenates two binary strings plus a space.
SELECT CONVERT(varchar(5), @mybin1) + ' '
+ CONVERT(varchar(5), @mybin2)
-- Here is the same conversion using CAST
SELECT CAST(@mybin1 AS varchar(5)) + ' '
+ CAST(@mybin2 AS varchar(5))
返回優(yōu)先級最高的參數(shù)的數(shù)據(jù)類型。有關更多信息,請參見數(shù)據(jù)類型的優(yōu)先順序。
當串聯(lián)空值時,由 sp_dboption 的 concat null yields null 設置或者 SET CONCAT_NULL_YIELDS_NULL 決定某個 expression 為 NULL 時的行為。根據(jù) concat null yields null 或者將 SET CONCAT_NULL_YIELDS_NULL 啟用為 ON,'string' + NULL 將返回 NULL。如果禁用了 concat null yields null 或 SET CONCAT_NULL_YIELDS_NULL,則結(jié)果為 'string'。
下面的示例從多個字符列中創(chuàng)建單個列(在列標題 Name 下),其中含有作者的姓氏,后面跟一個逗號和一個空格,然后是作者的名字。結(jié)果集是按照作者的姓氏,然后按照作者名字以字母遞增順序排列的。
USE pubs
SELECT (au_lname + ', ' + au_fname) AS Name
FROM authors
ORDER BY au_lname ASC, au_fname ASC
下面是結(jié)果集:
Name
--------------------------------------------------------------
Bennet, Abraham
Blotchet-Halls, Reginald
Carson, Cheryl
DeFrance, Michel
del Castillo, Innes
Dull, Ann
Green, Marjorie
Greene, Morningstar
Gringlesby, Burt
Hunter, Sheryl
Karsen, Livia
Locksley, Charlene
MacFeather, Stearns
McBadden, Heather
O'Leary, Michael
Panteley, Sylvia
Ringer, Albert
Ringer, Anne
Smith, Meander
Straight, Dean
Stringer, Dirk
White, Johnson
Yokomoto, Akiko
(23 row(s) affected)
該示例使用 CAST 函數(shù)將 numeric 和 date 數(shù)據(jù)類型串聯(lián)起來。
USE pubs
SELECT 'The order date is ' + CAST(ord_date AS varchar(30))
FROM sales
WHERE ord_num = 'A2976'
ORDER BY ord_num
下面是結(jié)果集:
------------------------------------------------
The order date is May 24 1993 12:00AM
(1 row(s) affected)
下面的示例串聯(lián)多個字符串,形成一個長字符串。若要顯示居住在 California 州的每個作者的姓氏和名字的首字母,則應該在姓氏后面設置一個逗號,并在名字的首字母后放置一個句點。
USE pubs
SELECT (au_lname + ',' + SPACE(1) + SUBSTRING(au_fname, 1, 1) + '.') AS Name
FROM authors
WHERE state = 'CA'
ORDER BY au_lname ASC, au_fname ASC
下面是結(jié)果集:
Name
--------------------------------------------
Bennet, A.
Carson, C.
Dull, A.
Green, M.
Gringlesby, B.
Hunter, S.
Karsen, L.
Locksley, C.
MacFeather, S.
McBadden, H.
O'Leary, M.
Straight, D.
Stringer, D.
White, J.
Yokomoto, A.
(15 row(s) affected)
相關文章