2012-02-20 54 views
2

我有一個存儲XML數據的SQLite數據庫中的NVARCHAR列。我需要在SQLite查詢中去除XML元素。SQLite XML SUBSTRING

柱XMLDATA將包含類似於下面的XML: -

<Inspection> 
<Enquiry> 
</Enquiry> 
<Enqid>282256</Enqid> 
<TargetDate>16/12/2011</TargetDate> 
</Inspection> 

我需要剝離出XML文檔的Enqid元件。

我可以使用子字符串,但我需要首先找到<Enqid>的索引位置。

我使用的標準SQLite沒有額外的庫。

+1

我只是發現了SQLite不支持的INSTR,substr_index,定位,CHARINDEX或其他任何字符串位置的功能:(( – Aprillion 2012-03-17 12:49:51

回答

1

如果真的必須是在SQLite查詢,我不能任何事情比手工列出​​所有字符串更好的東西被剝離出來,像這樣:

replace(replace(xmldata, 
'<Enquiry> 
</Enquiry> 
', ''), 
'<second_element></second_element>', '') 
as "stripped xmldata" 
+0

我覺得你得到了WRO ng的結尾,我需要保持標籤不會將其移除。所以我需要能夠選擇只有節點,沒有別的。 – 2012-03-22 16:29:08

+0

哦..爲什麼在你的例子中它是空的?我絕對不知道如何做* *在SQLite :( – Aprillion 2012-03-22 18:51:40

+0

其Enqid我不需要詢問。 – 2012-03-23 08:40:28

1

你有沒有嘗試使用LIKE

SELECT * FROM MyTable的地方XMLDATA LIKE '282256'

+0

這似乎工作,但只會選擇回到整個XMLDATA列這是我想要的罰款,但這不會工作如果我只想檢索XMLDATA列中的部分XML數據。 – 2012-03-23 10:24:22