sql >> Database >  >> RDS >> Mysql

Mysql-query WHERE-kolom is in json-array

Ik denk dat je dit alleen kunt bereiken in Mysql 5.7.

In versie 5.7 kun je zoiets doen als:

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

en het extraheert alleen de naamsleutel van json-object.

Zoek in alle items met de tag 'JavaScript':

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

Zoek alle items met tags die beginnen met 'Java':

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

gebruik 'one' om de eerste match te vinden of 'all' om alle matches te vinden

Je kunt de Twitter-bijnaam extraheren met een JSON-pad:

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

Je kunt ook verwijzen naar een JSON-pad in de WHERE-clausule om alleen gebruikers met een Twitter-account te retourneren:

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

Je kunt meer dingen doen, zoals:

  • JSON-waarden maken

  • Normalisatie, samenvoegen en autowrapping van JSON-waarden

  • JSON-waarden zoeken en wijzigen

  • Vergelijking en volgorde van JSON-waarden

  • Aggregatie van JSON-waarden

Raadpleeg voor meer informatie:https://dev.mysql. com/doc/refman/5.7/en/json.html



  1. Oracle-gegevensbronconfiguratie voor Spring

  2. SELECT query retourneer 1 rij van elke groep

  3. Hoe duplicaten over te slaan met INSERT INTO op een beter geoptimaliseerde manier?

  4. Integratie van postgreSQL op WAMP