2013-07-22 49 views
1

我有一個帶有xmltype的表,我需要能夠使用XPath進行查詢。當我包含涉及Xpath Rails的where子句條件時不會返回任何行。當我從Rails日誌複製生成的查詢並獨立執行它時,它會返回預期的行。涉及xpath的查詢不會返回任何行

SELECT * FROM my_table tab WHERE (tab.myxml.existsnode('//MyNode') = 1 

代碼:

select("tab.myxml.getclobval() myxml"). 
from("my_table tab"). 
where("tab.myxml.existsnode(:xp) = 1", :xp=>"//MyNode") 

回答

1

不知道爲什麼,但是當我指定existsnode 「!= 0」,而不是 「= 1」 它的工作原理:

select("tab.myxml.getclobval() myxml"). 
from("my_table tab"). 
where("tab.myxml.existsnode(:xp) != 0", :xp=>"//MyNode") 
+1

這是奇怪的。也許你應該查詢V $ SQL來查看提交到數據庫的語句到底是什麼。另外,您可能需要考慮使用XMLEXISTS而不是EXISTSNODE([已棄用](http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions057.htm#i1006711))。 –

+0

謝謝,xmlexists工作正常。不知道existsnodewas已被棄用。 –