如果添加了另一列,group_concat 返回 null
Posted
技术标签:
【中文标题】如果添加了另一列,group_concat 返回 null【英文标题】:group_concat returns null, if another column added 【发布时间】:2014-11-10 08:39:23 【问题描述】:我有以下代码
SELECT
GROUP_CONCAT(
CONCAT('"id"', id, ','),
CONCAT('"COL1"', col1, ','),
CONCAT('"col2"', col2, ','),
CONCAT('"col3"', col3, ','),
CONCAT('"col4"', col4, '')
SEPERATOR '\n')
AS json from tableX
整个 group_concat 返回 null。如果我删除了一个 concat(随机),它会起作用。
该表包含大约 1500 万行。 我已经设置了
SET SESSION group_concat_max_len = 188446744073709551615;
知道为什么它返回 null 吗?
【问题讨论】:
【参考方案1】:试试这个,处理任何空值,看看你的输出是否确实超过了长度阈值:
select json, length(json) from (
SELECT
GROUP_CONCAT(
CONCAT('"id"', coalesce(id, '""'), ','),
CONCAT('"COL1"', coalesce(col1, '""'), ','),
CONCAT('"col2"', coalesce(col2, '""'), ','),
CONCAT('"col3"', coalesce(col3, '""'), ','),
CONCAT('"col4"', coalesce(col4, '""'), '')
SEPARATOR '\n')
AS json from tableX
) x
-- limit 200000
如果 group_concat 函数允许 NULL 值覆盖其他所有值(我不确定),那么您已经满足了。
更新:SEPERATOR
是一个错字 - 应该是 SEPARATOR
。
【讨论】:
如果值为空,则添加引号 (""
),否则 [12,,,]
是无效的 json
@Dan:你得到长度输出了吗?您可以尝试包含limit
术语并增加直到遇到问题吗?
仍然只是返回空值。整个声明。即使我添加限制它返回 null ......仍然,如果我删除一个 CONCAT 它可以工作..
@Dan:你在使用 SEPARATOR(一个“e”)吗?我在我的数据库上试了一下,它似乎工作正常。
@davek,是的,分隔符以上是关于如果添加了另一列,group_concat 返回 null的主要内容,如果未能解决你的问题,请参考以下文章
如果任何值为 NULL,GROUP_CONCAT 返回 NULL