繁体   English   中英

在SQL中从String提取值

[英]Extracting value from String in SQL

我有一个SQL表,其中包含XML。 它不是很漂亮,但是它是项目的一部分,并且可以更改。

现在,我需要从该XML的特定元素中提取一个值。 价值是联邦制国家,所以价值的长度是可变的,这意味着

SUBSTRING ( expression ,start , length )

不是一种选择,因为我不能说我的价值将持续多久。

有没有允许在两个表达式之间进行搜索的功能,例如

FOO ('state>', '</state') 

或那个方向的东西?

编辑:

我正在使用MySQL 5.6

例:

<root>
  <person>
    <name>Michael</name>
    <state>Berlin</state>
  </person>
</root>

我的输出应该是

Berlin

另一个人的状态可能不同,因此价值的长度并非总是相同。

谢谢你的时间。

INSTR(str,模式)

是解决方案

和我在字符串中选择值的脚本如下所示

SELECT ID, substring(
xml,
instr(xml, "<state>") + 23,
(instr(xml, "</state>") - (instr(xml, "<state>") + 23))
) AS STATE
FROM tablexml 
WHERE xml
LIKE '%value%';

您可以使用substring_index()

select substring_index(substring_index(expression, '<state'>, 2), '</state>', -1) as state
from t;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM