在本教程中,将学习如何使用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('.', 'YiiBai', 'Com') full_doname
执行上面查询语句,得到以下结果:
full_doname
-----------
YiiBai.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()
函数将字符串与分隔符连接起来。