+(字符串串联)
+(字符串串联)
字符串表达式中的运算符,将两个或多个字符或二进制字符串、列或字符串和列名的组合串联到一个表达式中(字符串运算符)。
语法
expression + expression
参数
expression
是字符和二进制数据类型分类中任何数据类型(image、ntext 或 text 数据类型除外)的任何有效 Microsoft® SQL Server™ 表达式。两个表达式都必须具有相同的数据类型,或者其中的一个表达式必须能够隐式地转换为具有另一种数据类型的表达式。
在二进制字符串连同任何字符串与二进制字符串之间进行串联时,必须使用字符数据的显式转换。下面的示例显示了对于二进制串联,何时必须使用 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))
结果类型
返回优先级最高的参数的数据类型。有关更多信息,请参见数据类型的优先顺序。
注释
当串联空值时,由 sp_dboption 的 concat null yields null 设置或者 SET CONCAT_NULL_YIELDS_NULL 决定某个 expression 为 NULL 时的行为。根据 concat null yields null 或者将 SET CONCAT_NULL_YIELDS_NULL 启用为 ON,'string' + NULL 将返回 NULL。如果禁用了 concat null yields null 或 SET CONCAT_NULL_YIELDS_NULL,则结果为 'string'。
示例
A. 使用字符串串联
下面的示例从多个字符列中创建单个列(在列标题 Name 下),其中含有作者的姓氏,后面跟一个逗号和一个空格,然后是作者的名字。结果集是按照作者的姓氏,然后按照作者名字以字母递增顺序排列的。
USE pubs
SELECT (au_lname + ', ' + au_fname) AS Name
FROM authors
ORDER BY au_lname ASC, au_fname ASC
下面是结果集:
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)
B. 组合数字和日期数据类型
该示例使用 CAST 函数将 numeric 和 date 数据类型串联起来。
USE pubs
SELECT 'The order date is ' + CAST(ord_date AS varchar(30))
FROM sales
WHERE ord_num = 'A2976'
ORDER BY ord_num
下面是结果集:
------------------------------------------------
The order date is May 24 1993 12:00AM
(1 row(s) affected)
C. 使用多个字符串串联
下面的示例串联多个字符串,形成一个长字符串。若要显示居住在 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
下面是结果集:
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)