在 MySQL 中搜索 JSON 数组
假设您有一个 MySQL 表,其中包含一个名为“data”的 JSON 列,其中包含一个数组。您希望检索其中一个数组元素大于 2 的所有行。
查询
SELECT * from my_table WHERE JSON_EXTRACT(data, '$[*]') > 2;
返回不正确的结果,因为无论数组的值如何,它始终计算为 true .
在数组中搜索整数:
JSON_CONTAINS('[1,2,3,4,5]','7','$') # Returns: 0 JSON_CONTAINS('[1,2,3,4,5]','1','$') # Returns: 1
在数组中搜索字符串数组:
JSON_CONTAINS('["a","2","c","4","x"]','"x"','$') # Returns: 1 JSON_CONTAINS('["1","2","3","4","5"]','"7"','$') # Returns: 0
对于您的场景,请使用查询:
SELECT * from my_table WHERE JSON_CONTAINS(data, '2', '$');
此查询选择“数据”列包含元素大于 2 的数组的所有行。
以上是如何在MySQL中高效地搜索JSON数组中的元素?的详细内容。更多信息请关注PHP中文网其他相关文章!