SELECT * from dmp_data_verification_rule where json_extract(extra_note,'$.classCodesB') = '["ACCCCP", "ACCCAC"]' 这段sql,通过json_extract 提取数据,用= 匹配,查询不出数据,是为什么,数据库有这条记录
时间: 2024-02-28 08:54:53 浏览: 150
dmp.rar_ DMP_DMP_dmr
你的SQL语句使用的是`=`来匹配提取出来的json数组,但是json数组是一个无序的集合,所以如果要精确匹配,你需要使用`JSON_CONTAINS`函数。
以下是一个可以查询出数据的SQL语句示例,可以尝试一下:
```
SELECT * FROM dmp_data_verification_rule
WHERE JSON_CONTAINS(extra_note->'$.classCodesB', '["ACCCCP", "ACCCAC"]', '$');
```
其中,`JSON_CONTAINS`函数用来判断`classCodesB`数组中是否包含完全匹配的数组`["ACCCCP", "ACCCAC"]`,第三个参数`'$'`表示从JSON字符串的顶层开始查找。
另外,如果你要使用`=`符号来匹配json数组,可以使用`JSON_EXTRACT`函数提取数组后再进行匹配。例如,以下SQL语句可以查询出匹配的数据:
```
SELECT * FROM dmp_data_verification_rule
WHERE JSON_EXTRACT(extra_note, '$.classCodesB') = '["ACCCCP", "ACCCAC"]';
```
但是需要注意的是,这种匹配方式只能匹配数组的值完全相等,不能匹配数组的顺序不同的情况。
阅读全文