在本教學中,將學習如何使用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()
函數將字串與分隔符號連接起來。