一、SQL Server拼接字符串
在SQL Server中,拼接两个或多个字符串可以使用“+”运算符。这是最基本的字符串拼接操作。
DECLARE @str1 varchar(10) = 'Hello'
DECLARE @str2 varchar(10) = 'World'
SELECT @str1 + ' ' + @str2 AS ConcatenatedString
上述代码将输出结果为“Hello World”。
当需要拼接的字符串包含数字或日期类型,需要将其转换成字符串类型,方法是使用CONVERT函数。
DECLARE @num INT = 123
DECLARE @date DATETIME = '2021-08-01'
SELECT 'The number is ' + CONVERT(varchar(10), @num) + ', and the date is ' + CONVERT(varchar(10), @date, 120) AS ConcatenatedString
上述代码将输出结果为“The number is 123, and the date is 2021-08-01”。
二、SQL Server拼接函数CONCAT
除了使用“+”运算符进行字符串拼接,SQL Server还提供了CONCAT函数。
DECLARE @str1 varchar(10) = 'Hello'
DECLARE @str2 varchar(10) = 'World'
SELECT CONCAT(@str1, ' ', @str2) AS ConcatenatedString
上述代码将输出结果为“Hello World”。
CONCAT函数可以接受多个参数,如果其中一个参数为NULL,则结果为NULL。
三、SQL Server拼接函数STUFF和REPLACE
STUFF函数可以将字符串的一部分替换为另一个字符串。
DECLARE @str varchar(10) = 'abcdefgh'
SELECT STUFF(@str, 3, 2, '123') AS ReplacedString
上述代码将输出结果为“ab123efgh”,其中第一个参数为原始字符串,第二个参数为替换的起始位置,第三个参数为替换的长度,第四个参数为替换的字符串。
REPLACE函数可以将字符串中的某个子串替换为另一个字符串。
DECLARE @str varchar(10) = 'abcdefgh'
SELECT REPLACE(@str, 'cd', '123') AS ReplacedString
上述代码将输出结果为“ab123efgh”,其中第一个参数为原始字符串,第二个参数为要替换的子串,第三个参数为替换的字符串。
四、SQL Server拼接字段的函数
SQL Server中有几个函数可以拼接字段内容。
1. STRING_AGG函数
STRING_AGG函数可以将某个字段分组后拼接成一个字符串。
SELECT Department, STRING_AGG(Name, ',') AS EmployeeNames
FROM Employee
GROUP BY Department
上述代码将输出每个部门员工姓名的拼接结果,用逗号分隔。
2. FOR XML PATH
FOR XML PATH可以将查询结果合并为一个XML字符串,并通过STUFF和REPLACE函数进行拼接。
SELECT STUFF(
(SELECT ', ' + Name
FROM Employee
FOR XML PATH('')
), 1, 2, '') AS EmployeeNames
上述代码将输出所有员工姓名的拼接结果,用逗号分隔。
五、SQL Server拼接引号和单引号
在SQL Server中,拼接字符串时需要注意引号和单引号的使用。
1. 表示引号的常规用法
单引号可以用来括住字符串常量,例如:
SELECT 'This is a string' AS ExampleString
上述代码将会输出“This is a string”。
2. 表示引号的转义符
当需要在字符串中添加引号时,可以使用两个单引号表示一个引号,例如:
SELECT 'It''s a beautiful day' AS ExampleString
上述代码将会输出“It’s a beautiful day”。
3. 使用QUOTENAME函数拼接带有引号的字符串
如果需要拼接字符串时同时包含引号字符,可以使用QUOTENAME函数。
SELECT QUOTENAME('He said, "Hello"') AS ExampleString
上述代码将会输出“[He said, “Hello”]”。
六、SQL Server拼接符
在SQL Server中,除了字符串拼接操作,还有一些特别的拼接符。
1. 加号‘+’号、逗号‘,’和分号‘;’
这些符号可以用来在查询中连接多个表或字段。
2. UNION和UNION ALL
UNION可以将两个或多个查询结果合并为一个结果集,要求每个查询结果的列数和数据类型必须相同。UNION ALL与UNION类似,但不去重。
SELECT Name, Age, Department FROM Employee1
UNION ALL
SELECT Name, Age, Department FROM Employee2
上述代码将输出两个Employee表的全部数据。
七、SQL Server拼接字段
在SQL Server中,可以将多个字段拼接在一起作为一个字段返回,可以使用CONCAT_WS和FORMAT函数。
1. CONCAT_WS函数
CONCAT_WS函数可以将多个字段按照指定的分隔符拼接在一起。
SELECT CONCAT_WS(', ', FirstName, LastName) AS FullName
FROM Employee
上述代码将输出每个员工的姓名,中间用逗号和空格分隔。
2. FORMAT函数
FORMAT函数可以将多个字段按照指定的格式拼接在一起。
SELECT FORMAT(Birthdate, 'yyyy年MM月dd日') AS FormattedDate
FROM Employee
上述代码将输出每个员工的生日,格式为“xxxx年xx月xx日”。
八、SQL Server拼接字符串换行
在SQL Server中,可以使用CHAR(10)或者CHAR(13)拼接字符串的同时进行换行。
SELECT 'Line 1' + CHAR(10) + 'Line 2' AS MultiLineString
上述代码将输出两行,第一行为“Line 1”,第二行为“Line 2”。
九、SQL Server拼接查询结果选取
在SQL Server中,可以使用TOP关键字选取查询结果的前N条记录。
SELECT TOP 10 * FROM Employee
上述代码将输出Employee表的前10条记录。