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

Query MySQL WHERE colonna è nell'array json

Penso che tu possa ottenere questo risultato solo in MySQL 5.7.

Nella versione 5.7 puoi fare qualcosa come:

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

ed estrarrà solo la chiave del nome dall'oggetto json.

Cerca in tutti gli elementi con il tag 'JavaScript':

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

Trova tutti gli elementi con tag che iniziano con "Java":

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

usa "uno" per trovare la prima corrispondenza o "tutti" per trovare tutte le corrispondenze

Puoi estrarre il nickname Twitter utilizzando un percorso JSON:

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

Puoi anche fare riferimento a un percorso JSON nella clausola WHERE per restituire solo gli utenti con un account Twitter:

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

Puoi fare più cose come:

  • Creazione di valori JSON

  • Normalizzazione, unione e wrapping automatico dei valori JSON

  • Ricerca e modifica dei valori JSON

  • Confronto e ordinamento dei valori JSON

  • Aggregazione di valori JSON

per ulteriori informazioni, fare riferimento a:https://dev.mysql. com/doc/refman/5.7/en/json.html