`

低版本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()函数使用方法

    MySQL中的GROUP_CONCAT()函数是一个非常实用的聚合函数,它允许你在分组查询时将同一组内的多个值合并成一个字符串。此函数主要用于数据分析和报表生成,尤其在处理多对多关系的数据时,能简化数据处理流程。在本文...

    详解MySQL中concat函数的用法(连接字符串)

    在MySQL数据库中,`CONCAT`函数用于将两个或更多的字符串连接成一个单一的字符串。这个函数非常实用,尤其是在处理涉及字符串拼接的查询时。`CONCAT`的基本语法如下: ```sql CONCAT(str1, str2, ..., str_n) ``` ...

    MySQL 连接字符串函数 CONCAT() CONCAT-WS() GROUP-CONCAT()

    在 MySQL 中,处理字符串拼接有几种非常实用的函数,它们分别是 `CONCAT()`、`CONCAT_WS()` 和 `GROUP_CONCAT()`。这些函数在数据库操作中经常用于构建复合字符串,以满足特定的需求。 1. **CONCAT() 函数** `...

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

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

    浅谈mysql中concat函数,mysql在字段前/后增加字符串

    为了防止数字参数被自动转换为二进制格式,可以使用`CAST()`函数将其转换为字符类型,例如 `SELECT CONCAT(CAST(int_col AS CHAR), char_col)`。 在实际应用中,我们经常使用`CONCAT()`来合并字段或常量,例如: `...

    mysql字符串连接函数

    本文主要介绍几种常用的字符串连接函数,包括`CONCAT()`、`CONCAT_WS()`以及`GROUP_CONCAT()`函数,并通过示例来详细解释它们的用法及其特性。 #### 1. CONCAT() `CONCAT()`函数用于连接一个或多个字符串值。它...

    处理group by 查询速度慢的问题.docx

    ### 处理GROUP BY 查询速度慢的问题 在实际项目中,由于数据表的记录数量庞大,经常遇到查询速度缓慢的问题。本文将详细记录一次针对GROUP BY查询效率低下的排查及优化过程,希望能够对读者有所帮助。 #### 问题...

    人大金仓数据库适配mysql

    - KingbaseES不支持 `GROUP_CONCAT` 函数,可以使用 `STRING_AGG` 函数替代。 - `STRING_AGG` 的语法为 `STRING_AGG(字段名, 分隔符)`,其中分隔符不可省略。 示例: ```sql SELECT STRING_AGG(name || ' ' || ...

    mysql实现合并同一ID对应多条数据的方法

    GROUP_CONCAT函数是MySQL提供的一种聚合函数,它允许我们合并分组后的某个列的值,将它们连接成一个字符串。这个函数在处理多对一或者一对多关系时非常有用,例如在教师与班级的关系中,一个教师可能代多个班级,...

    两种mysql递归tree查询效率-mysql递归tree

    1. **调整`group_concat_max_len`参数**:该参数控制着`GROUP_CONCAT()`函数返回的最大长度。较大的值有助于在单个查询中获取更多的数据。 - 修改MySQL配置文件`my.ini`(或等效的配置文件)中的`group_concat_max_...

    MySQL常用函数的举例及例子

    ### MySQL常用函数详解 #### 一、数学函数 ...以上函数覆盖了MySQL中常用的数学函数、聚合函数、字符串函数以及日期和时间函数,通过合理运用这些函数可以帮助我们更加高效地处理数据库中的数据。

    mysql合并多条记录的单个字段去一条记录编辑

    总结来说,MySQL中的GROUP_CONCAT函数配合GROUP BY语句,为我们提供了方便的工具来处理多条记录的单个字段合并。根据实际需求选择合适的方法,可以有效地对数据进行汇总和展示。在处理大量数据时,合理使用这些函数...

    MySQL常用函数大全

    - **GROUP_CONCAT(col)**: 将指定列`col`中的所有值连接成一个字符串。 #### 字符串函数 - **ASCII(char)**: 返回字符`char`的ASCII码值。 - **BIT_LENGTH(str)**: 返回字符串`str`的比特长度。 - **CONCAT(s1, s2...

    Mysql 行转列,列转行 SQL语句和示例表结构SQL

    MySQL 虽然没有内置的行转列和列转行函数,但通过 CASE、GROUP_CONCAT、UNION ALL 和 JOIN 等 SQL 语句,我们可以灵活地对数据进行转换,满足不同的数据分析需求。在实际应用中,应根据数据的特性和业务需求选择合适...

    mysql递归查询.doc

    在 MySQL 中实现递归查询需要使用自定义函数(Stored Function),通过使用 FIND_IN_SET() 函数和 GROUP_CONCAT() 函数来实现递归查询。下面是一个实例,演示如何使用 MySQL 递归查询来实现部门表的多分类查询。 ...

    mysql经典50题_大数据_mysql经典50题_mysql经典五十题_hive_

    - **分组(GROUP BY)与聚合**:使用GROUP BY对数据进行分组,并使用聚合函数计算每个组的统计信息。 - **排序(ORDER BY)与分页(LIMIT)**:对查询结果进行排序和分页,以提高用户体验。 3. **数据插入与更新*...

    《MySQL数据库开发》期末复习题.pdf

    选择题部分涉及了MySQL的连接语法、版本查询、语句结束符设置、提示符设置、导入SQL脚本、SELECT语句用法、ENUM排序、LIMIT分页、GROUP_CONCAT函数、WITH ROLLUP扩展、SQL模式查询、数据处理模式(非严格和严格)...

    mysql内部函数

    MySQL内部函数是数据库管理系统中非常重要的组成部分,它们用于执行各种数据处理任务,包括但不限于计算、比较、转换和处理日期时间等。以下是对标题和描述中提及的一些关键知识点的详细解释: 1. **操作符和操作符...

    MySql 中查询树形结构的全部子项列表 Function

    SET v_output := CONCAT(v_output, '\n', (SELECT GROUP_CONCAT(CONCAT('(', id, ') ', name) SEPARATOR ' -> ') FROM temp_tree)); END WHILE; DROP TEMPORARY TABLE IF EXISTS temp_tree; RETURN v_output; ...

Global site tag (gtag.js) - Google Analytics