Maison > Questions et réponses > le corps du texte
Je cherche un moyen de concaténer des tableaux JSON en chaînes délimitées dans MySQL.
Vous trouverez ci-dessous un exemple utilisant des fonctions REPLACE()
imbriquées pour remplacer des caractères dans une chaîne.
SELECT REPLACE(REPLACE(REPLACE(JSON_KEYS('{ "foo": "I am foo", "bar": "I am bar", "baz": "I am baz" }'), '["', ''), '", "', '|'), '"]', '') AS value;
Retour des résultats...
bar|baz|foo
Existe-t-il une manière native de procéder sans avoir à faire des trucs piratés comme celui-ci ?
P粉9523651432023-09-07 12:10:40
Vous demandez une conversion JSON en CSV en utilisant des clés au lieu de valeurs. Le vrai « problème » est l’utilisation des clés, mais cela peut être réalisé de manière plus propre. Je ne pense pas que cette méthode soit plus propre, mais vous la trouverez peut-être plus élégante. Juste pour être plus sûr : non, il n'existe aucun moyen natif dans MySQL qui fasse ce dont vous avez besoin.
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
fonctionne de la même manière que vous vous attendez, mais verticalement.
Edit : Vous pouvez également vous référer à cette Question similaire.