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
广告