concat()函数

 作用:

函数用于将多个字符串连接成一个字符串。

返回值:

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
SELECT CONCAT('My', NULL, 'QL');//只要有一个为null,则输出null
NULL
SELECT CONCAT(14.3);
'14.3'

concat_ws()函数

 作用:

函数用于将多个字符串连接成一个字符串。

返回值:

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

参数说明:

第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

SELECT CONCAT_WS(',','First name','Second name','Last Name');
'First name,Second name,Last Name'
SELECT CONCAT_WS(',','First name',NULL,'Last Name');//null会直接忽略
'First name,Last Name'
SELECT CONCAT_WS(',','First name','','Last Name');//空是可以正常连接的
'First name,,Last Name'

group_concat()函数

语法说明

group_concat函数的作用是将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

(1) 基本语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc  ] [separator '分隔符'] );

(2) 说明:可以使用distinct排除重复值;可以使用order by子句对结果中的值进行排序。

(3) 返回的字符串的默认分隔符从逗号(,),若要改为其他分隔符,则使用SEPARATOR子句修改分隔符。

举例

select user_id,GROUP_CONCAT(`like_name` order by `create_time` desc SEPARATOR ',' )
FROM user_table  
WHERE user_id > 10 GROUP BY user_id

上方SQL对应的情况举例:

假设表结构为id(主键)、user_id(用户id)、like_name(爱好)、create_time(创建时间),想一次性查询出每个人的所有爱好(每条记录代表一个人),不用二次数据处理。