在本教程中,将学习如何使用SQL Server CONCAT_WS()函数将多个字符串与分隔符连接在一起。
SQL Server CONCAT_WS()函数简介
SQL Server CONCAT_WS()函数使用分隔符将两个或多个字符串连接成一个字符串。 CONCAT_WS()表示与分隔符连接。
以下是CONCAT_WS()函数的语法:
CONCAT_WS(separator,input_string1,input_string2,[...input_stringN]);
在上面这个语法中:
separator是一个基于字符的表达式,其值为:CHAR,NCHAR,VARCHAR或NVARCHAR类型的任何字符。input_string1到input_stringN是任何类型的表达式。CONCAT_WS()函数在连接之前隐式地将非字符类型的值转换为字符类型。
CONCAT_WS()函数将输入字符串连接成一个字符串。 它将这些连接的字符串与第一个参数中指定的分隔符分开。
请注意,CONCAT_WS()至少需要两个输入字符串。 这意味着如果传递零或一个输入字符串参数,该函数将引发错误。
CONCAT_WS()函数将NULL视为VARCHAR(1)类型的空字符串。 它也不会在NULL之间添加分隔符。 因此,CONCAT_WS()函数可以干净地连接可能具有空值的字符串。
SQL Server CONCAT_WS()函数示例
下面来看一些使用CONCAT_WS()函数的例子。
1. 使用CONCAT_WS()将文字字符串与分隔符连接起来
以下示例使用CONCAT_WS()函数将两个文字字符串连接成一个字符串。 它使用字符:.来分隔两个连接值:
SELECT
CONCAT_WS('.', 'zaixian', 'Com') full_doname
执行上面查询语句,得到以下结果:
full_doname
-----------
xuhuhu.com
(1 行受影响)
2. 将CONCAT_WS()与表列一起使用
以下语句使用CONCAT_WS()函数连接sales.customers表的last_name和first_name列中的值。 它用逗号(,)和空格分隔last_name和first_name:
SELECT
first_name,
last_name,
CONCAT_WS(', ', last_name, first_name) full_name
FROM
sales.customers
ORDER BY
first_name,
last_name;
执行上面查询语句,得到以下结果:
4. CONCAT_WS()处理NULL值
以下语句演示CONCAT_WS()函数如何处理具有NULL值的输入字符串:
SELECT
CONCAT_WS(',', 1, 2, NULL, NULL, 3);
执行上面查询语句,得到以下结果:
result
----------------------------------------
1,2,3
(1 row affected)
从输出中可以清楚地看到,CONCAT_WS()函数忽略NULL并且不在NULL值之间添加分隔符。
以下示例将客户数据连接起来以格式化客户的地址。 如果客户没有电话号码,则该功能会忽略它:
SELECT
CONCAT_WS
(
CHAR(13),
CONCAT(first_name, ' ', last_name),
phone,
CONCAT(city, ' ', state),
zip_code,
'---'
) customer_address
FROM
sales.customers
ORDER BY
first_name,
last_name;
执行上面查询语句,得到结果(部分)如下 -
customer_address
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aaron Knapp
(914) 402-4335
Yonkers NY
10701
---
Abbey Pugh
Forest Hills NY
11375
---
Abby Gamble
Amityville NY
11701
---
Abram Copeland
Harlingen TX
78552
---
Adam Henderson
Los Banos CA
93635
---
Adam Thornton
Central Islip NY
11722
---
... ...
4. 使用CONCAT_WS()生成CSV文件
此语句使用逗号(,)作为分隔符并连接first_name,last_name和email列中的值以生成CSV文件:
SELECT
CONCAT_WS(',', first_name, last_name, email)
FROM
sales.customers
ORDER BY
first_name,
last_name;
执行上面查询语句,得到以下结果:

在本教程中,学习了如何使用SQL Server CONCAT_WS()函数将字符串与分隔符连接起来。
