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

MySQL, gdzie JSON zawiera pustą tablicę

Oto dwa sposoby, aby to zrobić, testując na MySQL 5.7.24:

mysql 5.7.24> select config from mytable 
  where json_contains(config, cast('[]' as json), '$.tier');
+--------------+
| config       |
+--------------+
| {"tier": []} |
+--------------+

mysql 5.7.24> select config from mytable 
  where json_contains_path(config, 'one', '$.tier');
+--------------+
| config       |
+--------------+
| {"tier": []} |
+--------------+

Znalazłem inne rozwiązanie, które pomaga ściśle sprawdzić pustą tablicę:

Najpierw zobacz, że mam dwa wiersze, a jeden ma niepustą tablicę:

mysql 5.7.24> select config from mytable 
  where json_contains(config, json_array(), '$.tier');
+----------------------------------------+
| config                                 |
+----------------------------------------+
| {"tier": []}                           |
| {"tier": [{"name": "BK", "value": 8}]} |
+----------------------------------------+
2 rows in set (0.00 sec)

Teraz upewniam się, że długość tablicy wynosi 0, aby potwierdzić, że jest pusta:

mysql 5.7.24> select config from mytable 
  where json_contains(config, json_array(), '$.tier') 
  and json_length(config, '$.tier') = 0; 
+--------------+
| config       |
+--------------+
| {"tier": []} |
+--------------+
1 row in set (0.00 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqldump:Mam errno 32 podczas zapisu

  2. MySQL - Najłatwiej wybierz ostatni wstawiony wiersz

  3. sprawdzanie wartości w drzewie n-głębokości?

  4. SQL:Znajdowanie średniej liczby dni między biegami dla każdego biegacza

  5. WSTAW DO ... WYBIERZ Z ... W AKTUALIZACJI DUPLIKACJI KLUCZA