2015-10-12 31 views
0
SELECT DISTINCT ENTRY_GUID FROM 
     (SELECT e.ENTRY_GUID FROM alertwlnqedv3.ENTRY e, 
           alertwlnqedv3.ENTRY_PARTNERDEFINED_INFO ep, 
           alertwlnqedv3.PRODUCT p 
     WHERE e.ENTRY_GUID = ep.ENTRY_GUID AND 
       e.PRODUCT_CODE = p.PRODUCT_CODE AND 
      (XMLEXISTS('/partnerDefinedInfo/facetedIds/alertGroup[text()= 
      ("Colleen&s Main Web2 QA Folder")]' PASSING PARTNERDEFINED_INFO)) AND 
       e.STATUS_CODE != 13 AND 
       p.PRODUCT_VALUE =1) 

我試圖運行上述查詢 - 其中Colleen&s Main Web2 QA Folder是在運行時輸入的文本。現在,因爲它允許特殊字符&查詢打破。我試圖用\和另外一個&逃脫,但仍然失敗。請讓我知道我該如何處理這種情況。 TIA。如何在Oracle查詢中轉義&字符

+3

[在SQL字符串轉義號字符(http://stackoverflow.com/questions/12961215/escaping-ampersand-character-in-sql-string) –

+0

沒有運氣的可能的複製這也是.....獲取錯誤「缺少右括號」 –

+1

你可以確認,當你拿出&它的工作? – Bob

回答

1

只需使用此模式:

'text1&' || 'text2'

+0

得到錯誤缺少右括號 –

+0

@RajeshBhat對不起,只是用正確的引號 –

2

儘可能嘗試使用XPath表達式內部的價值使用chr(38)代替&

SELECT DISTINCT ENTRY_GUID FROM 
     (SELECT e.ENTRY_GUID FROM alertwlnqedv3.ENTRY e, 
           alertwlnqedv3.ENTRY_PARTNERDEFINED_INFO ep, 
           alertwlnqedv3.PRODUCT p 
     WHERE e.ENTRY_GUID = ep.ENTRY_GUID AND 
       e.PRODUCT_CODE = p.PRODUCT_CODE AND 
      (XMLEXISTS(('/partnerDefinedInfo/facetedIds/alertGroup[text()= 
      ("Colleen'||chr(38)||'s Main Web2 QA Folder")]') PASSING PARTNERDEFINED_INFO)) AND 
       e.STATUS_CODE != 13 AND 
       p.PRODUCT_VALUE =1) 
+0

這也trowing錯誤「缺少右括號」 –

+0

試圖用包圍整個字符串/ XML'()' – Marcx

+0

我編輯的答案更好地理解 – Marcx

1

,則需要使用逃脫符號一個XML實體。因此,你需要用&

更換每&在你輸入的字符串還需要照顧其他特殊的XML字符:

  • & - &
  • < - &lt;
  • > - &gt;
  • " - &quot;
  • ' - &apos;
+0

你能否詳細說明一下?我嘗試更換&,但Oracle提示我輸入AMP的值。 –

+0

@RajeshBhat:它不是提示變量的「Oracle」,它是SQL * Plus:http://stackoverflow.com/q/118190/330315 –

+0

哦,哦,我在SQLDeveloper中運行查詢。那我怎麼能阻止呢?我也需要從Java應用程序運行查詢。 –