sql >> Databasteknik >  >> RDS >> Mysql

Mysql-fråga WHERE-kolumnen finns i json-arrayen

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



  1. Returvärde för Oracle.DataAccess kör icke-fråga (lagrad proc)

  2. postgres csv date null importfel

  3. MySql-fråga för att ändra små bokstäver till versaler

  4. Komplext IF-uttalande med 3 tabeller