sql >> Databáze >  >> RDS >> Mysql

Mysql dotaz WHERE sloupec je v poli json

Myslím, že toho můžete dosáhnout pouze v Mysql 5.7.

Ve verzi 5.7 můžete udělat něco jako:

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

a extrahuje pouze klíč názvu z objektu json.

Vyhledat všechny položky se značkou 'JavaScript':

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

Najít všechny položky se štítky začínajícími „Java“:

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

použijte 'one' k nalezení první shody nebo 'all' k nalezení všech shod

Přezdívku na Twitteru můžete extrahovat pomocí cesty JSON:

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

Můžete také odkazovat na cestu JSON v klauzuli WHERE a vrátit pouze uživatele s účtem Twitter:

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

Můžete dělat více věcí jako:

  • Vytváření hodnot JSON

  • Normalizace, slučování a automatické zalamování hodnot JSON

  • Vyhledávání a úprava hodnot JSON

  • Porovnání a řazení hodnot JSON

  • Agregace hodnot JSON

více informací naleznete na:https://dev.mysql. com/doc/refman/5.7/en/json.html



  1. chyba python mysql v dotazu

  2. Nezachycená výjimka 'PDOException' se zprávou 'SQLSTATE[HY093]:Neplatné číslo parametru'

  3. SQL Injection Protection - jednoduché uvozovky

  4. Jak naplánovat dotaz MySQL?