3 votes

Comment convertir une chaîne dans un tableau pour AroraDB 5.7.12 ?

Je sais que je peux utiliser la fonction JSON_ARRAYAGG pour la version 5.7.22 de MySQL pour obtenir un tableau d'objets groupés, mais j'utilise une ancienne version pour mon travail. Quelqu'un sait-il comment utiliser une fonction similaire à JSON_ARRAYAGG pour AroraDB 5.7.12 ? Parce que j'ai besoin de regrouper des valeurs dans un tableau d'objets. Par exemple, j'ai utilisé GROUP_CONCAT(), mais le résultat est une chaîne d'objets séparés par des virgules ',' et j'ai besoin que le résultat soit une liste. Quelque chose comme ça, par exemple :

This is my table:
+-----------------+---------------+
| State           | City          |
+-----------------+---------------+
| Capital Region  | Canberra      |
| New South Wales | Sydney        |
| New South Wales | Newcastle     |
| New South Wales | Central Coast |
| New South Wales | Wollongong    |
| Queensland      | Brisbane      |
| Queensland      | Gold Coast    |
| Queensland      | Townsville    |
| Queensland      | Cairns        |
| South Australia | Adelaide      |
| Tasmania        | Hobart        |
| Victoria        | Melbourne     |
| Victoria        | Geelong       |
| West Australia  | Perth         |
+-----------------+---------------+

And I want the next result:
+-----------------+--------------------------------------------------------+
| State           | Cities                                                 |
+-----------------+--------------------------------------------------------+
| Capital Region  | ["Canberra"]                                           |
| New South Wales | ["Sydney", "Newcastle", "Central Coast", "Wollongong"] |
| Queensland      | ["Brisbane", "Gold Coast", "Townsville", "Cairns"]     |
| South Australia | ["Adelaide"]                                           |
| Tasmania        | ["Hobart"]                                             |
| Victoria        | ["Melbourne", "Geelong"]                               |
| West Australia  | ["Perth"]                                              |
+-----------------+--------------------------------------------------------+

So, is there a MySQL function to this? 
Thanks for your attention!

3voto

lad2025 Points 38168

Combinaison GROUP_CONCAT con CONCAT :

SELECT CAST(CONCAT('[',GROUP_CONCAT(CONCAT('"',city,'"')),']') AS JSON) AS cities
FROM tab
GROUP BY State;

db<>fiddle demo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X