MySQL CONCAT函数

时间:2019-11-20 08:52:24  来源:igfitidea点击:

简介:在本教程中,您将学习使用MySQL CONCAT和CONCAT_WS函数将两个或多个字符串连接在一起的各种方法。

要连接两个或多个带引号的字符串值,请按照以下语法将字符串彼此相邻放置:

SELECT 'MySQL ' 'String ' 'Concatenation';

与其他数据库管理系统相比,MySQL字符串连接更干净。
例如,如果使用PostgreSQL或Oracle,则必须使用字符串串联运算符||。
在Microsoft SQL Server中,您使用加法算术运算符(+)来连接字符串值。

除了使用空格进行字符串连接外,MySQL还提供了另外两个用于连接字符串值的函数:CONCAT和CONCAT_WS。

MySQL CONCAT函数

MySQL CONCAT函数接受一个或多个字符串参数,并将它们连接成一个字符串。
CONCAT函数至少需要一个参数,否则会引发错误。

下面说明了CONCAT函数的语法。

CONCAT(string1,string2, ... );

CONCAT函数在连接之前将所有参数转换为字符串类型。
如果任何参数为NULL,则CONCAT函数将返回NULL值。

以下语句连接两个带引号的字符串:MySQL和CONCAT。

SELECT CONCAT('MySQL','CONCAT');

如果添加NULL值,则CONCAT函数将返回NULL值,如下所示:

SELECT CONCAT('MySQL',NULL,'CONCAT');

请参阅示例数据库中的以下客户表。

要获取联系人的全名,可以使用CONCAT函数将名字,空格和姓氏连接起来,如下所示:

SELECT 
    concat(contactFirstName,' ',contactLastName) Fullname
FROM
    customers;

MySQL CONCAT_WS函数:用分隔符连接字符串

MySQL提供了CONCAT函数的一种特殊形式:CONCAT_WS函数。
CONCAT_WS函数使用预定义的分隔符将两个或多个字符串值连接在一起。

下面说明了CONCAT_WS函数的语法:

CONCAT_WS(seperator,string1,string2, ... );

第一个参数是其他参数的分隔符:string1,string2,…

CONCAT_WS函数在字符串参数之间添加分隔符,并返回单个字符串,并在字符串参数之间插入分隔符。

以下语句连接两个字符串值:John和Doe,并用逗号分隔这两个字符串:

SELECT CONCAT_WS(',','John','Doe');

当且仅当第一个参数(即分隔符)为NULL时,CONCAT_WS函数才返回NULL。
请参见以下示例:

SELECT CONCAT_WS(NULL ,'Jonathan', 'Smith');

与CONCAT函数不同,CONCAT_WS函数在分隔符参数之后跳过NULL值。
换句话说,它忽略NULL值。

SELECT CONCAT_WS(',','Jonathan', 'Smith',NULL);

以下语句使用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;

输出结果如下:

Customer_Address                                   
---------------------------------------------------
Schmitt Carine                                     
54, rue Royale                                     
44000 Nantes                                       
France                                             

King Jean                                          
8489 Strong St.                                    
83030 Las Vegas                                    
USA

...

在本教程中,您学习了如何使用MySQL CONCAT和CONCAT_WS函数将一个或多个字符串值连接为单个字符串。