Maison  >  Questions et réponses  >  le corps du texte

Réécrivez le titre comme suit : Concaténer un tableau JSON en chaîne dans MySQL

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粉935883292P粉935883292410 Il y a quelques jours659

répondre à tous(1)je répondrai

  • P粉952365143

    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.

    répondre
    0
  • Annulerrépondre