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

Mysql-forespørgsel WHERE-kolonnen er i json-array

Jeg tror, ​​at du kun kan opnå dette i Mysql 5.7.

I version 5.7 kan du gøre noget som:

SELECT JSON_EXTRACT(json_field, '$.name');

og det vil kun udtrække navnetøglen fra json-objekt.

Søg i alle elementer med tagget 'JavaScript':

SELECT * FROM `table` WHERE JSON_CONTAINS(json_field, '["JavaScript"]');

Find alle elementer med tags, der starter "Java":

SELECT * FROM `table` WHERE JSON_SEARCH(json_field, 'one', 'Java%') IS NOT NULL;

brug 'én' for at finde det første match eller 'alle' for at finde alle matcher

Du kan udtrække Twitter-kaldenavnet ved hjælp af en JSON-sti:

SELECT name, json_field->"$.twitter" AS `twitter` FROM `user`;

Du kan også henvise til en JSON-sti i WHERE-sætningen for kun at returnere brugere med en Twitter-konto:

SELECT name, profile->"$.twitter" AS `twitter` FROM `user` WHERE profile->"$.twitter" IS NOT NULL;

Du kan gøre flere ting som:

  • Oprettelse af JSON-værdier

  • Normalisering, fletning og autoindpakning af JSON-værdier

  • Søgning og ændring af JSON-værdier

  • Sammenligning og rækkefølge af JSON-værdier

  • Aggregering af JSON-værdier

for mere info henvises til:https://dev.mysql. com/doc/refman/5.7/en/json.html



  1. MySQL-tabel som en FIFO/kø

  2. Højeste udseende af en værdi inden for hver gruppe

  3. MySQL:Brug af datoerne i en mellem-tilstand for resultaterne

  4. ved hjælp af (-) bindestreg i mysql tabelnavn