Jag tror att du bara kan uppnå detta i Mysql 5.7.
I version 5.7 kan du göra något som:
SELECT JSON_EXTRACT(json_field, '$.name');
och det extraherar bara namnnyckeln från json-objekt.
Sök efter alla objekt med taggen "JavaScript":
SELECT * FROM `table` WHERE JSON_CONTAINS(json_field, '["JavaScript"]');
Hitta alla objekt med taggar som börjar med "Java":
SELECT * FROM `table` WHERE JSON_SEARCH(json_field, 'one', 'Java%') IS NOT NULL;
använd "en" för att hitta den första matchningen eller "alla" för att hitta alla matchningar
Du kan extrahera Twitter-smeknamnet med en JSON-sökväg:
SELECT name, json_field->"$.twitter" AS `twitter` FROM `user`;
Du kan också referera till en JSON-sökväg i WHERE-satsen för att endast returnera användare med ett Twitter-konto:
SELECT name, profile->"$.twitter" AS `twitter` FROM `user` WHERE profile->"$.twitter" IS NOT NULL;
Du kan göra fler saker som:
-
Skapa JSON-värden
-
Normalisering, sammanslagning och autowrapping av JSON-värden
-
Söka och ändra JSON-värden
-
Jämförelse och ordning av JSON-värden
-
Aggregation av JSON-värden
för mer information, se:https://dev.mysql. com/doc/refman/5.7/en/json.html