mysql,获取json中的json字段数据,如:有一个json字段extract_note,存储数据结构为:{ "classCode":"ACPPRR", "defaultValue":{ "relCode":"Sy2Eq" } },怎么使用mysql获取extract_note中的defaultvalue中的relCode
时间: 2023-07-19 19:35:55 浏览: 76
可以使用 MySQL 内置的 JSON 函数 `JSON_EXTRACT()` 来获取 JSON 中的数据,具体使用方式如下:
```sql
SELECT JSON_EXTRACT(extract_note, '$.defaultValue.relCode') AS relCode FROM table_name;
```
其中,`extract_note` 是 JSON 字段的名称,`table_name` 是表名。`'$defaultValue.relCode'` 是要获取的 JSON 数据的路径。
在上面的 JSON 中,`relCode` 的路径是 `defaultValue.relCode`,因此我们可以使用上述 SQL 语句来获取 `relCode` 的值。
相关问题
mysql json中有一个数组类型字段 ,例如:extra_note json字段中有值:{"scopeCode": "project", "classCodesA": ["ACCCAC"]} ,怎么用= 查询classCodesA,数组完全等于
你可以使用MySQL的`JSON_CONTAINS`函数来查询JSON数组,其中可以指定第三个参数来确保数组完全匹配。
例如,要查询`extra_note`字段中`classCodesA`数组完全等于`["ACCCAC"]`的记录,可以使用以下查询语句:
```
SELECT * FROM your_table
WHERE JSON_CONTAINS(extra_note->'$.classCodesA', '["ACCCAC"]', '$') = 1
AND JSON_LENGTH(extra_note->'$.classCodesA') = 1;
```
这个查询语句中,`JSON_CONTAINS`函数用来判断`classCodesA`数组中是否包含完全匹配的数组`["ACCCAC"]`,第三个参数`'$'`表示从JSON字符串的顶层开始查找;而`JSON_LENGTH`函数用来确保`classCodesA`数组的长度为1,以确保数组完全匹配。
注意,`extra_note`字段必须是JSON类型,否则这个查询语句将会失败。
mysql json中有一个数组类型字段,怎么完全匹配?例如:extra_note json字段中有值:{"scopeCode": "project", "classCodesA": ["ACCCAC"]} ,怎么通过"classCodesA": ["ACCCAC"] 进行精准匹配 mysql及Mappper.xml试下
在MySQL中,可以使用JSON_CONTAINS函数来进行JSON数组的精准匹配。具体语法如下:
```
JSON_CONTAINS(json_doc, val[, path])
```
其中,json_doc是JSON类型的字段名,val是要匹配的JSON数组,path是可选参数,表示要匹配的JSON数组在json_doc中的路径。
对于你的例子,可以使用以下的SQL语句来进行精准匹配:
```
SELECT * FROM table_name WHERE JSON_CONTAINS(extra_note->'$.classCodesA', '["ACCCAC"]');
```
在Mapper.xml中,可以使用以下的语句来进行精准匹配:
```
<select id="selectByClassCodesA" parameterType="string" resultType="YourResultType">
SELECT * FROM table_name WHERE JSON_CONTAINS(extra_note->'$.classCodesA', #{classCodesA});
</select>
```
其中,#{classCodesA}表示要匹配的JSON数组,注意要使用字符串类型作为参数类型。
阅读全文