摘要:在本教程中,您将学习使用 MySQL CONCAT 和 CONCAT_WS 函数将两个或多个字符串连接在一起的各种方法。
要连接两个或多个带引号的字符串值,请将字符串彼此相邻放置,语法如下:
SELECT 'MySQL ' 'String ' 'Concatenation';
Code language: SQL (Structured Query Language) (sql)
与其他数据库管理系统相比,MySQL 字符串连接更加清晰。例如,如果您使用PostgreSQL或 Oracle,则必须使用字符串连接运算符 ||。在 Microsoft SQL Server 中,您可以使用加法算术运算符 (+) 来连接字符串值。
除了使用空格进行字符串连接之外,MySQL 还提供了另外两个连接字符串值的函数: CONCAT
和CONCAT_WS
。
MySQL CONCAT 函数
MySQL CONCAT
函数接受一个或多个字符串参数并将它们连接成一个字符串。 CONCAT
函数至少需要一个参数,否则会引发错误。
下面说明了CONCAT
函数的语法。
CONCAT(string1,string2, ... );
Code language: SQL (Structured Query Language) (sql)
CONCAT
函数在连接之前将所有参数转换为字符串类型。如果任何参数为NULL
,则CONCAT
函数返回NULL
值。
以下语句连接两个带引号的字符串: MySQL
和CONCAT
。
SELECT CONCAT('MySQL','CONCAT');
Code language: SQL (Structured Query Language) (sql)
如果添加NULL
值, CONCAT
函数将返回NULL
值,如下所示:
SELECT CONCAT('MySQL',NULL,'CONCAT');
Code language: SQL (Structured Query Language) (sql)
请参阅示例数据库中的以下customers
表。
要获取联系人的全名,请使用CONCAT
函数连接名字、空格、姓氏,如下语句:
SELECT
concat(contactFirstName,' ',contactLastName) Fullname
FROM
customers;
Code language: SQL (Structured Query Language) (sql)
MySQL CONCAT_WS 函数:用分隔符连接字符串
MySQL提供了一种特殊形式的CONCAT
函数: CONCAT_WS
函数。 CONCAT_WS
函数使用预定义的分隔符连接两个或多个字符串值。
下面说明了CONCAT_WS
函数的语法:
CONCAT_WS(seperator,string1,string2, ... );
Code language: SQL (Structured Query Language) (sql)
第一个参数是其他参数的分隔符:string1、string2、...
CONCAT_WS
函数在字符串参数之间添加分隔符,并返回在字符串参数之间插入分隔符的单个字符串。
以下语句连接两个字符串值:John 和 Doe,并用逗号分隔这两个字符串:
SELECT CONCAT_WS(',','John','Doe');
Code language: SQL (Structured Query Language) (sql)
当且仅当第一个参数(即分隔符)为NULL
时, CONCAT_WS
函数才返回NULL
。请参见以下示例:
SELECT CONCAT_WS(NULL ,'Jonathan', 'Smith');
Code language: SQL (Structured Query Language) (sql)
与CONCAT
函数不同, CONCAT_WS
函数会跳过分隔符参数后面的NULL
值。换句话说,它忽略 NULL 值。
SELECT CONCAT_WS(',','Jonathan', 'Smith',NULL);
Code language: SQL (Structured Query Language) (sql)
以下语句使用CONCAT_WS
函数构造完整地址:
SELECT
CONCAT_WS(CHAR(13),
CONCAT_WS(' ', contactLastname, contactFirstname),
addressLine1,
addressLine2,
CONCAT_WS(' ', postalCode, city),
country,
CONCAT_WS(CHAR(13), '')) AS Customer_Address
FROM
customers;
Code language: SQL (Structured Query Language) (sql)
这是输出结果:
Customer_Address
---------------------------------------------------
Schmitt Carine
54, rue Royale
44000 Nantes
France
King Jean
8489 Strong St.
83030 Las Vegas
USA
...
Code language: SQL (Structured Query Language) (sql)
在本教程中,您学习了如何使用 MySQL CONCAT
和CONCAT_WS
函数将一个或多个字符串值连接成单个字符串。