2014-09-19 22 views
0

我正在使用一個oracle數據庫,其中的數據具有由任何有效的XML組成的字符串屬性。該XML如下所示:使用LIKE選擇匹配模式的行

<tag><t1>[someIntValue]</t1><moreTags>...</moreTags></tag> 

現在我想選擇做someIntValue特定值的行。我試用了attr NOT LIKE '%<t1>1600</t1>%',其中1600是我不想被選中的值。但前者也給我行甚至沒有這個標籤。有沒有否定模式中的任何通配符(類似attr LIKE '%<t1>![1600]</t1>%'

感謝提前:)

回答

1
select ... 
from .... 
where attr like '%<t1>%</t1>%' 
and attr not like '%<t1>1600</t1>%' 

有人誰比我更快的正則表達式可能會給你一個更好的答案,但是這一次應該很好地工作足夠。

+0

好的正則表達式不能在LIKE內工作,據我所知,所以你的解決方案應該可以工作。我目前對其進行了修改,但是需要很多時間來執行查詢...... – HimBromBeere 2014-09-19 10:27:12

+0

Oracle在10g中引入了regex支持我認爲。如果能夠提出表達式,REGEXP_LIKE操作符可能會有所幫助。無論如何,感謝您接受我的回答。 – Bacs 2014-09-19 10:41:54

+0

好的提示,那就是我正在尋找的東西。那麼,我接受了你的答案,因爲它解決了我的問題,雖然不完全符合我的預期,但是它沒有。 – HimBromBeere 2014-09-19 10:48:15