Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql zapytanie WHERE kolumna jest w tablicy json

Myślę, że możesz to osiągnąć tylko w Mysql 5.7.

W wersji 5.7 możesz zrobić coś takiego:

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

i wyodrębni tylko klucz nazwy z obiektu json.

Przeszukaj wszystkie elementy z tagiem „JavaScript”:

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

Znajdź wszystkie elementy z tagami zaczynającymi się od „Java”:

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

użyj 'jeden', aby znaleźć pierwsze dopasowanie lub 'wszystkie', aby znaleźć wszystkie dopasowania

Pseudonim Twittera możesz wyodrębnić za pomocą ścieżki JSON:

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

Możesz również odwołać się do ścieżki JSON w klauzuli WHERE, aby zwrócić tylko użytkowników z kontem na Twitterze:

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

Możesz zrobić więcej rzeczy, takich jak:

  • Tworzenie wartości JSON

  • Normalizacja, scalanie i automatyczne zawijanie wartości JSON

  • Wyszukiwanie i modyfikowanie wartości JSON

  • Porównanie i kolejność wartości JSON

  • Agregacja wartości JSON

Więcej informacji można znaleźć na stronie:https://dev.mysql. com/doc/refman/5.7/en/json.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL wyświetla wydajność

  2. Vagrant - zdalne połączenie z mysql - poza vagrant połączeniem ssh

  3. Wybór najwyższej pensji

  4. Powiązanie EF Core z tabelą Mysql

  5. Nie można pobrać danych z tabeli MySQL, która pasuje do określonego uid