我正在尝试通过 MySQL 将一些关系信息提取到 JSON 字符串中。但是,我使用的方法似乎会截断返回值。
CONCATMyQSL 是否对使用// 的GROUP_CONCAT查询强制执行某种最大字符串长度JSON_OBJECT?我可以覆盖这个吗?
(SELECT
CONCAT(
'[',
GROUP_CONCAT(
JSON_OBJECT(
'my_key_1', my_table.my_val_1,
'my_key_2', my_table.my_val_2,
'my_key_3', my_table.my_val_3,
'my_key_4', my_table.my_val_4,
## [etc, etc ...]
)
),
']'
)
FROM my_table
) AS my_alias
Run Code Online (Sandbox Code Playgroud)
yst*_*sth 11
使用 JSON_ARRAYAGG 而不是 GROUP_CONCAT:
SELECT
JSON_ARRAYAGG(
JSON_OBJECT(
'my_key_1', my_table.my_val_1,
'my_key_2', my_table.my_val_2,
'my_key_3', my_table.my_val_3,
'my_key_4', my_table.my_val_4,
## [etc, etc ...]
)
)
FROM my_table
Run Code Online (Sandbox Code Playgroud)
GROUP_CONCAT 在 @@group_concat_max_len 处被截断(在 MySQL 或 10.2 之前的 MariaDB 上默认为 1024,但您可以使用 eg 设置SET @@group_concat_max_len=1000000;);此限制不适用于 JSON_ARRAYAGG。
JSON_ARRAYAGG 需要 MySQL 5.7.22+ 或 MariaDB 10.5+
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |