数据库字段存放值为json数组形式,怎样通过sql语句查询是否在数据中出现指定查询值

129 阅读1分钟

mysql中使用json方法处理字段

截屏2024-01-17 16.23.45.png

在MySQL中,如果你的storeid字段存储的是JSON数组格式的数据,如["1","1007"],你可以使用JSON_EXTRACT函数结合JSON_CONTAINS函数来判断数组中是否包含特定值。以下是查询语句

SELECT * FROM user WHERE JSON_CONTAINS(JSON_EXTRACT(user.store_auth, '$[*]'), '"1053"');

这里,JSON_EXTRACT(storeid, '$[*]')会提取出storeid字段中所有数组元素,并返回一个包含这些元素的新JSON数组。然后JSON_CONTAINS用于检查这个新数组是否包含字符串"1"。 请注意,上述查询适用于MySQL 5.7及以上版本,因为JSON_EXTRACT和JSON_CONTAINS函数是在MySQL 5.7中引入的JSON支持的一部分。 另外,在MySQL 8.0及更高版本中,可以简化这个查询,直接使用JSON_SEARCH函数查找指定的值:

SELECT * FROM user WHERE JSON_SEARCH(user.store_auth, 'one', '1053') IS NOT NULL;

在这个查询中,JSON_SEARCH函数会在JSON数组中搜索'1'并返回找到的路径,如果没找到则返回NULL。通过检查结果是否为NULL,我们可以确定'1'是否存在于storeid字段的JSON数组中。