将标题重写为:将MySQL中的JSON数组连接为字符串
P粉935883292
P粉935883292 2023-09-06 14:59:38
0
1
695

我正在寻找一种在MySQL中将JSON数组连接为分隔字符串的方法。

下面是一个示例,使用嵌套的REPLACE()函数来替换字符串中的字符。

SELECT REPLACE(REPLACE(REPLACE(JSON_KEYS('{
  "foo": "I am foo",
  "bar": "I am bar",
  "baz": "I am baz"
}'), '["', ''), '", "', '|'), '"]', '') AS value;

返回结果...

bar|baz|foo

有没有一种原生的方法来做到这一点,而不需要像这样做一些hacky的事情?

P粉935883292
P粉935883292

全部回复(1)
P粉952365143

您正在要求使用键而不是值进行JSON到CSV转换。真正的“问题”是使用键,但可以以更简洁的方式实现。我不认为这种方式比较简洁,但您可能会觉得更优雅。为了确保额外的确定:不,MySQL中没有任何原生的方法可以满足您的需求。

SELECT 
    GROUP_CONCAT(json_source.a_key SEPARATOR '|') 
FROM JSON_TABLE(
    JSON_KEYS('{
        "foo": "I am foo",
        "bar": "I am bar",
        "baz": "I am baz"
        }'), 
    "$[*]" COLUMNS(a_key TEXT PATH '$')
  ) AS json_source;

JSON_TABLE 是一个强大的工具,但需要阅读和大量的交流才能理解。我自己还在交流阶段。GROUP_CONCAT 的工作方式与您预期的一样,但是垂直方向。

编辑:还可以参考这个类似问题

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板