您的位置:

SQL Server拼接指南

一、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条记录。