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

MySQL, kde JSON obsahuje prázdné pole

Zde jsou dva způsoby, jak to udělat, testování 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": []} |
+--------------+

Našel jsem další řešení, které pomáhá přísně kontrolovat prázdné pole:

Nejprve se podívejte, že mám dva řádky a jeden má neprázdné pole:

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)

Nyní se ujistím, že délka pole je 0, abych potvrdil, že je prázdné:

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. Jak zacházet se sloupcem tabulky s názvem vyhrazeným klíčovým slovem SQL?

  2. Selhání vrácení zpět transakce JDBC při uzavřeném připojení

  3. Zámek a transakce v postgresu, které by měly zablokovat dotaz

  4. Nakonfigurujte Lucene.Net s SQL Server