MySQL CONCAT_WS() 函式



MySQL 的CONCAT_WS()函式,代表“帶分隔符的連線”,用於將多個字串連線成單個字串,並用指定的分隔符分隔它們。

此函式的第一個引數被視為分隔符。它可以是字串或數值。如果分隔符值為 NULL,則此函式返回 NULL。

如果字串值中存在任何空字串,它們將包含在結果中。但是,如果您傳遞NULL作為字串值(在分隔符之後),則會忽略它。

SQL 中的字串函式用於操作字串值。SQL 指定了許多字串函式,CONCAT_WS() 就是其中之一。

語法

以下是 MySQL CONCAT_WS() 函式的語法:

CONCAT_WS(separator,str1,str2,...);

引數

此函式以分隔符和多個字串值作為引數。

返回值

此函式返回使用指定分隔符連線給定字串的結果。

示例

在此示例中,我們使用 CONCAT_WS() 函式將字串 'tutorials' 和 'point' 連線起來,並使用下劃線作為分隔符:

SELECT CONCAT_WS('_','tutorials', 'point');

以上程式碼的輸出如下:

CONCAT_WS('_','tutorials', 'point')
tutorials_point

示例

這是另一個示例,我們使用空格字元作為分隔符,連線字串 'Hello'、'how'、'are' 和 'you':

SELECT CONCAT_WS(' ','Hello', 'how', 'are', 'you');

以上程式碼的輸出如下:

CONCAT_WS(' ','Hello', 'how', 'are', 'you')
Hello how are you

示例

您還可以提供數值作為分隔符,如下所示:

SELECT CONCAT_WS('999', 'Hello', 'how', 'are', 'you');

獲得的輸出如下:

CONCAT_WS('999', 'Hello', 'how', 'are', 'you')
Hello999how999are999you

示例

如果您將 NULL 值作為分隔符傳遞,則返回 NULL:

SELECT CONCAT_WS(NULL, 'test', 'sample');

產生的結果如下:

CONCAT_WS(NULL, 'test', 'sample')
NULL

示例

在下面的示例中,我們在分隔符之後傳遞一個空字串,並且正如您所看到的,它包含在結果中:

SELECT CONCAT_WS('_____','str1','str2', 'str3', '     ', 'str4');

我們得到以下輸出:

CONCAT_WS('_____','str1','str2', 'str3', ' ', 'str4')
str1_____str2_____str3_____ _____str4

示例

如果您在分隔符之後提供 NULL 作為字串值,則會忽略它,並且不會包含在結果中:

SELECT CONCAT_WS('_____','str1','str2', 'str3', NULL, 'str4');

獲得的輸出如下:

CONCAT_WS('_____','str1','str2', 'str3', NULL, 'str4')
str1_____str2_____str3_____str4

示例

您還可以將表的列名作為引數傳遞給此函式(以及分隔符),並將給定列中的值連線/合併。

讓我們建立一個名為“PLAYERS”的表,並使用 CREATE 和 INSERT 語句向其中插入記錄,如下所示:

CREATE TABLE PLAYERS(
   ID INT,
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255),
   PRIMARY KEY (ID)
);

現在,讓我們使用 INSERT 語句向其中插入記錄:

INSERT INTO PLAYERS VALUES
(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India'),
(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica'),
(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka'),
(4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India'),
(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India'),
(6, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');

獲得的 PLAYERS 表如下:

ID First_Name Last_Name Date_Of_Birth Place_Of_Birth Country
1 Shikhar Dhawan 1981-12-05 Delhi India
2 Jonathan Trott 1981-04-22 CapeTown SouthAfrica
3 Kumara Sangakkara 1977-10-27 Matale Srilanka
4 Virat Kohli 1988-11-05 Delhi India
5 Rohit Sharma 1987-04-30 Nagpur India
6 James Anderson 1982-06-30 Burnley England

以下查詢使用空字串作為分隔符連線/合併 PLAYERS 表的 First_Name 和 Last_Name 值,並將結果顯示為 FullName:

SELECT CONCAT (' ', First_Name, Last_Name) as FullName, Country 
FROM PLAYERS;

輸出

執行以上程式碼後,我們得到以下輸出:

FullName Country
Shikhar Dhawan India
Jonathan Trott SouthAfrica
Kumara Sangakkara Srilanka
Virat Kohli India
Rohit Sharma India
James Anderson England

示例

在這裡,我們使用空空格 (" ") 作為分隔符,連線超過 2 列,即 "First_name"、"Last_name" 和 "Country",使用以下查詢:

SELECT CONCAT (' ', First_Name, Last_Name, Country) as FullName_and_Country
FROM PLAYERS;

輸出

顯示的輸出如下:

FullName_and_Country
Shikhar Dhawan India
喬納森·特勞特 南非
庫馬拉·桑加卡拉 斯里蘭卡
維拉特·科利 印度
羅希特·沙爾馬 印度
詹姆斯·安德森 英格蘭
mysql-concat-ws-函式.htm
廣告