MySQL 的 CONCAT_WS
函数将多个字符串按照指定的分隔符连接在一起,和 CONCAT
函数功能相似,只不过多了一个可以指定的连接符(分隔符)。分隔符可以是一个字符串,用来分隔其余参数。如果分隔符是 NULL
,则最终结果也为 NULL
(不管其他字符串是什么)。
语法
语句如下:
CONCAT_WS(separator, expression1, expression2, expression3,...)
参数:
separator
:指定分隔符,必需的,在每个表达式之间添加的分隔符。如果分隔符为NULL
,则此函数返回NULL
。expression1, expression2, expression3, ...
:必需的。要加在一起的表达式。将跳过具有NULL
值的表达式。
返回:
它将在连接所有指定的字符串后,返回一个新字符串,以及指定的分隔符。如果所有输入字符串均为 NULL
,则结果将为 NULL
。如果分隔符为 NULL
,它将返回 NULL
。
CONCAT_WS 函数从 MySQL 4.0 版本开始支持。
示例
使用 CONCAT_WS
函数连接两个字符串,示例如下:
mysql> SELECT CONCAT_WS(',', 'First name', ' Last Name');
+---------------------------------------------------------+
| CONCAT_WS(',', 'First name', ' Last Name') |
+---------------------------------------------------------+
| First name, Last Name |
+---------------------------------------------------------+
1 row in set (0.00 sec)
连接三个字符串,示例如下:
SELECT CONCAT_WS("@ ", "Knowledge ", "Dict ", 13 ) AS ConcatWsStr;
输出如下:
+---------------------------------------------------------+
| ConcatWsStr |
+---------------------------------------------------------+
| Knowledge @ Dict @ 13 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
用 NULL
分隔符连接字符串,如下:
mysql> SELECT CONCAT_WS(NULL, 'First name', 'Last Name');
+---------------------------------------------------------+
| CONCAT_WS(',', 'First name', 'Last Name') |
+---------------------------------------------------------+
| NULL |
+---------------------------------------------------------+
1 row in set (0.00 sec)
连接带有 NULL
的字符串,NULL
值则忽略,如下:
mysql> SELECT CONCAT_WS(',', NULL, 'Last Name');
+---------------------------------------------------------+
| CONCAT_WS(',', 'First name', 'Last Name') |
+---------------------------------------------------------+
| Last Name |
+---------------------------------------------------------+
1 row in set (0.00 sec)
使用 CONCAT_WS
连接数据库表中的字段,具体如下:
创建一个 Emp
表:
CREATE TABLE Emp(
Employee_Id INT AUTO_INCREMENT,
FirstName VARCHAR(100) NOT NULL,
LastName VARCHAR(100) NOT NULL,
Residence VARCHAR(50) NOT NULL,
Salary INT NOT NULL,
PRIMARY KEY(Employee_Id )
);
插入如下数据:
INSERT INTO Emp(FirstName, LastName, Residence, Salary )
VALUES
('Animesh', 'Garg', 'Delhi', 70000 ),
('Neshu', 'Sharma', 'Nepal', 73000 ),
('Aryan', 'Sharma', 'WestBengal', 72000 ),
('Abdul', 'Ali', 'Delhi', 73000 ),
('Seema', 'Sharma', 'Bihar', 70000 ) ;
表数据当前如下:
Select * From Emp;
Employee_Id FirstName LastName Residence Salary
1 Animesh Garg Delhi 70000
2 Neshu Sharma Nepal 73000
3 Aryan Sharma WestBengal 72000
4 Abdul Ali Delhi 73000
5 Seem Sharma Bihar 70000
现将 FirstName
和 LastName
通过连接符号 _
变成一个新的字段:
SELECT CONCAT_WS('_', FirstName, LastName) AS FullName From Emp;
结果如下:
+------------------------------------------------+ | FullName | +------------------------------------------------+ | Animesh_Garg | +------------------------------------------------+ | Neshu_Sharma | +------------------------------------------------+ | Aryan_Sharma | +------------------------------------------------+ | Abdul_Ali | +------------------------------------------------+ | Seema_Sharma | +------------------------------------------------+