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函數