SQL Server Concat_ws()函数

在本教程中,将学习如何使用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是一个基于字符的表达式,其值为:CHARNCHARVARCHARNVARCHAR类型的任何字符。
  • input_string1input_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_namefirst_name列中的值。 它用逗号(,)和空格分隔last_namefirst_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_namelast_nameemail列中的值以生成CSV文件:

SELECT 
    CONCAT_WS(',', first_name, last_name, email)
FROM 
    sales.customers
ORDER BY 
    first_name, 
    last_name;

执行上面查询语句,得到以下结果:

生成CSV文件

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


上一篇: SQL Server字符串函数 下一篇: SQL Server Window函数