Mysql查询json数据特定key的值

Mysql查询json数据特定key的值,第1张

mysql某张表中有一个字段为json格式,假设字段名为properties {"ocsp.event.append-timestamp.enable": "true","ocsp.streaming.data.filter.expression": "id=e4_json","ocsp.event.enable": "true","ocsp.schema.field.names": "id","ocsp.event.output.numPartitions": "0","ocsp.event.json-format.enable": "true","ocsp.streaming.field.translation.enable": "false","ocsp.event.append-id.enable": "false","ocsp.streaming.data.keys": "id","ocsp.stream.sql": "SELECT id FROM uuu_5dea34758400_oi5xs0rdaf WHERE id=e4_json","ocsp.kafka.topic": "hn_20210216b","ocsp.event.period": "{\"period\":\"day\",\"time\":[{\"begin\":{\"d\":\"0\",\"h\":\"03:30:23\"},\"end\":{\"d\":\"0\",\"h\":\"23:20:23\"}}],\"startDate\":\"2021-02-16\",\"endDate\":\"2021-03-28\"}","ocsp.event.periodSwitch": "true","ocsp.event.output": "5d74080d1ac0" } 现在需要查询ocsp.stream.sql的值 可以使用json_extract函数。注意如果该key是由点分隔符组成的,则需要用双引号将整个key包起来select json_extract(properties,'$. "ocsp.schema.field.names" ') from COMPONENT where type='EVENT' and id='5dea403ed7c0' json_keys函数可以用来获取json中所有的key字段 同时 select json_keys (properties) from COMPONENT where type='EVENT' and id='5dea403ed7c0'

注意一:字段类型为varchar、char、text等字符类型

注意二:内容为json

注意三:mysql服务器版本为5.7及以上

语法:select * from 表名 where 字段->'$.属性'='查询内容'

select * from table1 where col1->'$.name'='xiaoming'

创建单个json数组

创建单个对象,并返回该对象

将其他类型的值转换成JSON类型来获取json值

将 json 值作为参数传入,如果值有效,则返回其 json 类型,否则报错

将两个或多个 json 值合并为一个 json 并返回最终值

合并两个或多个 json 值,但不合并重复键的值,如果出现重复键,仅保留最后一个的值

经过函数转换得到的 json 是区分大小写的,原因在于转换后的字符集格式为 utf8mb4 和 utf8mb4_bin ,因为 utf8mb4_bin 是二进制排序规则,所以区分大小写

因为区分大小写,所以 json 中的 null 、 true 和 false 都必须用小写字母编写

直接插入键值对语句和用 JSON_OBJECT 转换成json值存入的差别在于,前者需要双反斜杠转义字符,而后者只需要单反斜杠转义字符

当需要存储的内容如下

使用直接插入的方法时:

使用 JSON_OBJECT 时

案例

因为 $[1] 和 $[2] 计算为非标量值, 所以它们可以用作选择嵌套值的更具体的路径表达式的基础。例子:

结合 JSON_SET``JSON_INSERT``JSON_REPLACE``JSON_REMOVE 的使用

JSON_SET 替换存在的路径的值, 并为不存在的路径添加值

JSON_INSERT 添加新值, 但不替换现有值:

JSON_REPLACE 替换现有值并忽略新值:

JSON_REMOVE 使用一个或多个路径, 这些路径指定要从文档中删除的值。返回值是原始文档减去由文档中存在的路径选择的值:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8584914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存