sql >> Database teknologi >  >> RDS >> Mysql

MySQL 5.7:konverter simpel JSON_ARRAY til rækker

Du kan gøre dette i MySQL 8.0 med JSON_TABLE() :

select r.res from mytable, 
 json_table(mytable.content, '$[*]' columns (res int path '$')) r 
where mytable.id = 1
 

Jeg testede på MySQL 8.0.17, og dette er outputtet:

+------+ | res | +------+ | 3 | | 4 | +------+

Hvis du bruger en version, der er ældre end MySQL 8.0, har du disse muligheder:

  • Find en umuligt kompleks SQL-løsning. Dette er næsten altid den forkerte måde at løse problemet på, fordi du ender med kode, der er for dyr at vedligeholde.
  • Hent JSON-arrayet, som det er, og eksploder det i applikationskoden.
  • Normaliser dine data, så du har én værdi pr. række i stedet for at bruge JSON-arrays.

Jeg finder ofte spørgsmål om Stack Overflow om brug af JSON i MySQL, der overbeviser mig om, at denne funktion har ødelagt MySQL. Udviklere bliver ved med at bruge det uhensigtsmæssigt. De kan godt lide, at det gør det nemt at indsætte semi-strukturerede data, men de finder ud af, at det gør forespørgsler at data er alt for komplekse.




  1. Kørsel af migreringer med Rails i en Docker-container med flere containerforekomster

  2. Hvordan bruger man MySQLDB SScursor effektivt?

  3. mysqli_connect virker ikke

  4. Sammenligning af Galera Cluster Cloud-tilbud:Anden del af Google Cloud Platform (GCP)