簡體   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