返回顶部

收藏

Mysql 连接字符串函数CONCAT,concat_ws,GROUP_CONCAT使用总结

更多

在Mysql中两个字符串相加不能用+号,加号是用来做数字相加的,在mysql中要连接字符串需要用CONCAT或者CONCAT_WS函数:

Mysql CONCAT函数

语法:

CONCAT(str1,str2...)

例如:

select OCNCAT('AB','CD')

将输出 ABCD

需要注意的是:

SELECT CONCAT('abc',NULL) 其中有一个字符串为NULL时将输出NULL

Mysql 的CONCAT_WS函数

的CONCAT_WS函数()函数, 表示concat with separator,即有分隔符的字符串连接

select concat_ws(',','11','22','33');

输出:

11,22,33

需注意concat_ws的参数中有null的话,并非都返回null,例如 concat_ws(',','ab',NULL) 将输出 ab

Mysql的GROUP_CONCAT()函数

从名字可以看出这个函数是一个聚合函数,在group语句中使用,可以将多行的字符串按分组整合成一个字符串。

语法:

GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val]) 

假定:有一张表是UserRole存储User对应Role关系,其有两列userId,RoleCode,我们可以通过GROUP_CONCAT来取出用逗号分隔的用户角色

select userId,GROUP_CONCAT(RoleCode SEPARATOR  ',') from UserRole

需要注意,GROUP_CONCAT函数默认的最大可连接字符串的长度是1024,如果连接的字符串长度超过1024的话会被截断,不过我们可以通过设置group_concat_max_len的值来修改GROUP_CONCAT的最大长度。

例如:

SET SESSION group_concat_max_len= 99999;
select userId,GROUP_CONCAT(RoleCode SEPARATOR  ',') from UserRole

标签:mysql,sql,GROUP_CONCAT,CONCAT

收藏

0人收藏

支持

2

反对

0

相关聚客文章
  1. jzguo 发表 2014-11-18 13:32:34 MySQL GROUP BY 两个或多个条件
  2. ITJesse 发表 2014-01-05 20:06:56 将SQL Server中的数据导入MySQL
  3. alswl 发表 2017-09-19 08:43:45 一个关于 nolock 的故事:深入理解数据库隔离级别
  4. Salley 发表 2014-08-05 08:51:27 MySQL查询脚本分享_分类前十
  5. 博主 发表 2012-08-24 07:00:00 [转]MySQL数据库性能优化之SQL优化
  6. sulong 发表 2010-07-20 13:50:18 一次sql调优
  7. ITJesse 发表 2014-01-05 20:06:56 将SQL Server中的数据导入MySQL
  8. admin 发表 2016-03-23 05:02:18 SQL注入速查表(下)
  9. 小丁 发表 2016-08-08 15:27:22 mysqld_multi关闭不了MySQL处理Tips
  10. dormy 发表 2013-11-21 02:34:49 JNDI连接数据库
  11. admin 发表 2016-03-23 05:00:24 SQL注入速查表(上)
  12. yeseng 发表 2016-04-04 14:55:45 谈数据稽核(3)

评论

  • 总结的很好,谢谢分享!

    回复   |   赵小全 发表于 2012-12-15 20:55:32
  • SET SESSION group_concat_max_len= 99999;

    这里的group_concat_max_len也可以在my.ini中做配置。

    回复   |   甄码农 发表于 2012-12-15 21:18:38

发表评论