文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Oracle、MySQL数据库获取JSON属性值、获取XML标签属性值

2023-09-13 19:23

关注

文章目录

Oracle、MySQL数据库获取JSON属性值、获取XML标签属性值

在日常的开发中,我们会经常遇到数据库某字段存储的是clob格式或大text格式的字段,里面存的可以是json,也可以是xml的文本。我们把数据存进去了,想获取其中一个属性值或标签值时,总会让人头疼。小编整理了一些知识,希望能帮助到大家!

1、获取JSON格式的某个属性值

1.1 Oracle数据库中获取JSON某个属性值

Oracle数据库提供了一个函数:json_value(变量1变量2)
- 变量1是存储json格式的列字段
- 变量2是要获取的json属性的层级(要以$.开头标识
下面我们进行测试:
在table1表的remark字段中添加一段JSON数据

{"a": "aaaa","b": "bbbb","c": "cccc","d": {"da": "daaaad","db": "dbbbbd","dc": "dccccd"}}

我现在要获取json字符中的b属性的值和dc属性的值,SQL可以这样写:

select  json_value(a.remark, '$.b') as b,  json_value(a.remark, '$.d.dc') as dcfrom  table1 a

查询结果:
json查询结果

1.2 MySQL数据库中获取JSON的属性值

MySQL数据库提供了一个函数:json_extract(变量1,变量2)
- 变量1是存储json格式的列字段
- 变量2是要获取的json属性的层级(要以$.开头标识
**注意:**下面我们进行测试(json的测试数据同上
我现在要获取json字符中的b属性的值和dc属性的值,SQL可以这样写:

select  JSON_EXTRACT(a.remark, '$.b') as b,  JSON_EXTRACT(a.remark, '$.d.dc') as dcfrom  table1 a

查询结果:
mysql中JSON格式获取属性值结果

从查询结果中我们可以看到,查询出来的值被双引号("")包裹住了,很明显这个值不太是我们想要的。
我们可以使用MySQL提供的另一个函数来避免这个问题:json_unquote(变量)

改造后的SQL:

select  JSON_UNQUOTE(JSON_EXTRACT(a.remark, '$.b')) as b,  JSON_UNQUOTE(JSON_EXTRACT(a.remark, '$.d.dc')) as dcfrom  table1 a

查询结果:
正确的查询结果

2、获取XML格式的某个标签的属性值

2.1 Oracle数据库中获取XML某个标签的属性值

Oracle数据库提供了两个函数:extractvalue(变量1,变量2)xmltype(变量)
extractvalue(变量1,变量2):用于获取XML的标签属性值
- 变量1:存储xml格式的列字段
- 变量2:要获取的XML属性的层级(要以/开头标识
xmltype(变量):用于标识某个列(字段)是xml数据类型
- 变量:表示该列(字段)是xml的数据类型
下面我们进行测试:
在table1表的remark字段中添加一段XML数据

<body>    <a>aaaaa>    <b>bbbbb>    <c>ccccc>    <d>        <da>daaaadda>        <db>dbbbbddb>        <dc>dccccddc>    d>body>

我现在要获取XML数据中的b属性的值和dc属性的值,SQL可以这样写:

select  extractvalue(xmltype(a.remark), '/body/b') as b,  extractvalue(xmltype(a.remark), '/body/d/dc') as dcfrom  table1 a

查询结果:
xml结果

2.2 MySQL数据库中获取XML某个标签的属性值

Oracle数据库提供了一个函数:extractvalue(变量1,变量2)
- 变量1:存储xml格式的列字段
- 变量2:要获取的XML属性的层级(要以/开头标识
**注意:**下面我们进行测试(xml的测试数据同上
我现在要获取XML数据中的b属性的值和dc属性的值,SQL可以这样写:

select  extractvalue(a.remark, '/body/b') as b,  extractvalue(a.remark, '/body/d/dc') as dcfrom  table1 a

查询结果:
mysql中Xml标签属性值

3、总结:

通过对比不难发现,MySQL和Oracle数据库中获取JSON属性值和XML标签属性值的方式大同小异。
当然我们也可以结合实际情况去组合使用,比如在JSON格式中包含xml格式,则需要嵌套方法进行获取JSON格式中的XML的标签属性值。大家可根据自己的应用场景自行组合使用!

如果该篇文章对大家有帮助,可以支持并关注,(个人经验总结,如有更好的方式方法,大家可评论留言交流!)
祝大家的技术日日新,苟日新!

来源地址:https://blog.csdn.net/qq_42320934/article/details/129275352

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯