mysql - 从 SQL 中的字符串中提取值
问题描述
我有一个包含 XML 列的 SQL 表。它不漂亮,但它是项目的一部分,并且是可变的。
现在我需要从这个 XML 的特定元素中提取一个值。value 是一个联邦状态,所以 value 的长度是可变的,什么意思
SUBSTRING ( expression ,start , length )
不是一种选择,因为我不能说我的价值会持续多久。
是否有允许在两个表达式之间进行搜索的函数,例如
FOO ('state>', '</state')
或者那个方向的任何东西?
编辑:
我正在使用 MySQL 5.6
例子:
<root>
<person>
<name>Michael</name>
<state>Berlin</state>
</person>
</root>
我的输出应该是
Berlin
不同的人可以有不同的状态,因此价值的长度并不总是相同的。
谢谢你的时间。
解决方案
INSTR(字符串,模式)
是解决方案
我在字符串中选择值的脚本如下所示
SELECT ID, substring(
xml,
instr(xml, "<state>") + 23,
(instr(xml, "</state>") - (instr(xml, "<state>") + 23))
) AS STATE
FROM tablexml
WHERE xml
LIKE '%value%';
推荐阅读
- node.js - koa 和 sse,消息延迟
- javascript - 如何在 JQuery 移动可折叠标头中添加操作?
- python - 如何在一个 python 代码中运行两台服务器
- excel - 如何为不同的用户使用具有可变路径的 MkDir
- c# - 如何在使用 C# 将数据附加到 CSV 文件时添加列和行标题
- javascript - 超时 - 在 jest.setTimeout 指定的 10000 毫秒超时内未调用异步回调
- python - django rest框架获取所有相关字段并在嵌套的manytomany字段中过滤
- ios - GMUNonHierarchicalDistanceBasedAlgorithm clustersAtZoom 中的断言失败
- c++ - 无法使用 PlaySound 在 C++ 中播放音频文件
- python - Python 3 for 字典内的循环错误