You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sequelize中自定义GROUP_CONCAT的分隔符?

如何修改Sequelize中GROUP_CONCAT的分隔符?

原查询代码

groupAccess.findAll({
  attributes: [
    'id',
    'group_name',
    'description',
    [sequelize.fn('GROUP_CONCAT', sequelize.col('module_name')), 'module_name']
  ],
  group: ['group_name']
})

原执行结果

数据库查询结果

id  |  group_name  |  description  |  module_name
----+--------------+---------------+---------------------------
1   |  A           |  desc A       |  mod_1,mod_2,mod_3
4   |  B           |  desc B       |  mod_4,mod_5,mod_6,mod_7
8   |  C           |  desc C       |  mod_8,mod_9,mod_10
11  |  D           |  desc D       |  mod_11,mod_12

Sequelize返回结果

[
  {
    id: "1",
    group_name: "A",
    description: "desc A",
    module_name: "mod_1,mod_2,mod_3"
  },
  {
    id: "4",
    group_name: "B",
    description: "desc B",
    module_name: "mod_4,mod_5,mod_6,mod_7"
  },
  {
    id: "8",
    group_name: "C",
    description: "desc C",
    module_name: "mod_8,mod_9,mod_10"
  },
  {
    id: "11",
    group_name: "D",
    description: "desc D",
    module_name: "mod_11,mod_12"
  },
]

问题

如何在Sequelize中将GROUP_CONCAT的逗号分隔符替换为其他符号(例如->符号)?


解决方案

MySQL的GROUP_CONCAT函数支持通过SEPARATOR参数指定自定义分隔符,在Sequelize中只需给sequelize.fn添加对应的参数即可。

修改后的查询代码

groupAccess.findAll({
  attributes: [
    'id',
    'group_name',
    'description',
    [
      sequelize.fn(
        'GROUP_CONCAT', 
        sequelize.col('module_name'), 
        ' SEPARATOR ->'  // 指定自定义分隔符,注意SEPARATOR与符号间需加空格
      ), 
      'module_name'
    ]
  ],
  group: ['group_name']
})

预期执行结果

数据库查询结果

id  |  group_name  |  description  |  module_name
----+--------------+---------------+---------------------------
1   |  A           |  desc A       |  mod_1->mod_2->mod_3
4   |  B           |  desc B       |  mod_4->mod_5->mod_6->mod_7
8   |  C           |  desc C       |  mod_8->mod_9->mod_10
11  |  D           |  desc D       |  mod_11->mod_12

Sequelize返回结果

[
  {
    id: "1",
    group_name: "A",
    description: "desc A",
    module_name: "mod_1->mod_2->mod_3"
  },
  {
    id: "4",
    group_name: "B",
    description: "desc B",
    module_name: "mod_4->mod_5->mod_6->mod_7"
  },
  {
    id: "8",
    group_name: "C",
    description: "desc C",
    module_name: "mod_8->mod_9->mod_10"
  },
  {
    id: "11",
    group_name: "D",
    description: "desc D",
    module_name: "mod_11->mod_12"
  },
]

内容的提问来源于stack exchange,提问作者masadamsahid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:05:31