我有以下代码
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的任何想法?
答案 0 :(得分:4)
尝试此操作,处理任何空值并查看输出是否确实超过了长度阈值:
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
。