`

低版本MySql使用GROUP_CONCAT函数连接int型数据问题

阅读更多
先介绍下GROUP_CONCAT()的用法吧:GROUP_CONCAT()主要是用于搭配GROUP BY实现列转行展现的。

下面上表mytb:

id     name   sex
1 aaa 1
2 bbb 1
3 ccc 1
4 ddd 2
5 eee 2

按照性别分组查询,并将它们的name连接起来:

sql:SELECT GROUP_CONCAT(name) FROM mytb GROUP BY sex

结果正常:
GROUP_CONCAT(name)
aaa,bbb,ccc
ddd,eee

按照性别分组查询,并将它们的id连接起来:

sql:SELECT GROUP_CONCAT(id) FROM mytb GROUP BY sex

结果正常:
GROUP_CONCAT(id)
(BLOB)
(BLOB)
在MySql5.1上这样的GROUP_CONCAT(id)将会变为BLOB类型,MySql5.5则不会。

但如果加上CAST(id AS CHAR),结果就正常了

sql:SELECT GROUP_CONCAT(CAST( id AS CHAR)) FROM mytb GROUP BY sex

结果:

GROUP_CONCAT(id)
1,2,3
4,5

GROUP_CONCAT()函数默认用","来分割连接的各项,如果不想用","分割,可以加上参数SEPARATOR,即像:GROUP_CONCAT(name,SEPARATOR '#'),结果就会按照"#"来分割。

GROUP_CONCAT()函数还可以按照所连接的项进行排序,如:GROUP_CONCAT(name ORDER BY name SEPARATOR '#')。

所以为了兼容老版本的MySql我们需要把id字段转换下再使用GROUP_CONCAT函数:
GROUP_CONCAT(CAST(id AS CHAR)) 。


分享到:
评论

相关推荐

    Mysql的GROUP_CONCAT()函数使用方法

    GROUP_CONCAT([DISTINCT] expr [,expr …][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name …]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_...

    mysql中GROUP_CONCAT的使用方法实例分析

    本文实例讲述了mysql中GROUP_CONCAT的使用方法。分享给大家供大家参考,具体如下: 现在有三个表,结构如下: cate表: CREATE TABLE `cate` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `...

    mysql group_concat 实现把分组字段写成一行的方法示例

    本文实例讲述了mysql group_concat 实现把分组字段写成一行的方法。分享给大家供大家参考,具体如下: 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 函数语法: group_concat( [DISTINCT]...

    mysql字符串连接函数

    MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自...

    mysql数据库的基本操作语法

    MySQL可以使用check约束,但check约束对数据验证没有任何作用。 create table temp( id int auto_increment, name varchar(20), age int, primary key(id), /*check约束*/ check(age > 20) ); 上面check约束要求age...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    MySQL命令大全

    MYSQL常用命令 1.导出整个数据库 mysqldump -u 用名 -p –default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 ...

    MYSQL常用命令大全

    但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。  二、显示命令  1、显示数据库列表。  show databases;  刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的...

    mysql基础只是总结

    concat(字符1,字符2...) 字符连接 instr(字符串,字符) 寻找字符所在字符串的位置 char ascii编码 转化为字符 ord 字符转化为ascii编码 substring(字符串,开始位置,长度); length(字符串) 字符串长度 substr...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    2. 网状结构模型:按照网状数据结构建立的数据库系统称为网状数据库系统,其典型代表是DBTG(Data Base Task Group)。 3. 关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)。...

    2009达内SQL学习笔记

    可以使用AND或OR、NOT等连接相关的条件 计算次序可以通过圆括号()来明确地分组。不要过分依赖默认计算次序,使用圆括号()没有坏处,它能消除二义性。 and:条件与 如 SELECT prod_id,prod_price,prod_name FROM...

Global site tag (gtag.js) - Google Analytics