mysql - 在 MySQL 中使用 XML 数据从文本字段中选择查询
问题描述
我将 XML 数据存储在 MySQL 表的文本列中,我想通过选择查询获取子注释,但没有返回任何结果。
表中的数据
<Attributes>
<Map>
<entry key="accessRequired" value="Yes"/>
<entry key="company" value="0001"/>
<entry key="companyName" value="ABC Inc"/>
<entry key="contractorEndDate" value="11/15/2020"/>
<entry key="contractorStartDate" value="10/10/2019"/>
<entry key="costCenter" value="1234"/>
<entry key="costCenterName" value="design & develop"/>
<entry key="country" value="US"/>
<entry key="departmentAdminEmail" value="testadmin@abc.com"/>
<value>
<Map>
<entry key="Rule" value="123456hgfjuykuiykui"/>
</Map>
</value>
</entry>
</Map>
</Attributes>
我用来读取数据的查询
select display_name, SUBSTRING_INDEX(ExtractValue(attributes,'/attributes/map/departmentAdminEmail'),' ',1) from table1 where display_name like 'John%';
只想列出电子邮件地址字段,你们能帮我查询一下吗?
解决方案
您的 Xpath 正在寻找一个<departmentAdminEmail>
元素。要搜索具有属性值的元素,您必须使用[@key="departmentAdminEmail"]
要提取属性的值,您需要使用/@value
.
所以应该是
select display_name, ExtractValue(attributes,'/attributes/map/entry[@key="departmentAdminEmail"]/@value') AS email
from table1
where display_name like 'John%';
推荐阅读
- neo4j - neo4j 的 CPU 使用率很高,我怎么知道它在做什么?
- scala - 大型 Docker 上下文减慢 docker-compose 构建
- opencv - 将python opencv库导入sikuliX
- snappydata - 无法设置多节点集群
- ios - Fastlane 匹配构建 adhoc 和 appstore
- javascript - Jquery 输出显示未定义
- php - Laravel 关系 whereRaw 约束内部 with() 方法
- vue.js - Axios 变成了 Unhandled Promise Rejection with ie9
- c# - 如何正确使用 String.skip 函数?
- c# - ASP.NET MVC Web 系统发布到多域