इसे करने के दो तरीके यहां दिए गए हैं, 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": []} |
+--------------+
मुझे एक और समाधान मिला, जो एक खाली सरणी के लिए कड़ाई से जाँच करने में मदद करता है:
सबसे पहले, देखें कि मेरे पास दो पंक्तियाँ हैं, और एक में एक गैर-रिक्त सरणी है:
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)
अब मैं यह सुनिश्चित करता हूं कि सरणी की लंबाई 0 है, यह पुष्टि करने के तरीके के रूप में कि यह खाली है:
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)