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 |
示例
此处,我们使用以下查询将"First_name"、"Last_name"和"Country"等两列以上数据连接起来,并以空格 (" ") 作为分隔符 -
SELECT CONCAT (' ', First_Name, Last_Name, Country) as FullName_and_Country
FROM PLAYERS;
输出
显示的输出如下所示 -
| FullName_and_Country |
|---|
| Shikhar Dhawan India |
| Jonathan Trott SouthAfrica |
| Kumara Sangakkara Srilanka |
| Virat Kohli India |
| Rohit Sharma India |
| James Anderson England |
mysql-concat-ws-function.html