2014-04-29 7 views
7

का उपयोग करते समय ' या किसी विशेष वर्ण को प्रतिस्थापित करने के लिए मेरे पास निम्न क्वेरी है। कैसे एपॉस्ट्रॉफ़ि (') रखने के लिए बरकरार है और न यह &apos द्वारा प्रतिस्थापित हो रही वहाँ भी मैं की तरह &XMLELEMENT Oracle

SELECT RTRIM(xmlagg(XMLELEMENT(E,'I''m'||':')).extract('//text()'),':') 
    FROM dual; 

आउटपुट हैंडल करना चाहते हैं अन्य पात्रों हैं:

I'm 

धन्यवाद।

उत्तर

11

आप विशेष रूप से utl_i18n पैकेज और unescape_reference() फ़ंक्शन का उपयोग कर सकते हैं। यहाँ एक उदाहरण है:

clear screen; 
column res format a7; 

select utl_i18n.unescape_reference(
      rtrim(
       xmlagg(-- use of xmlagg() function in 
         -- this situation seems to be unnecessary 
         XMLELEMENT(E,'I''m'||':') 
        ).extract('//text()'),':' 
       ) 
     ) as res 
from dual; 

परिणाम:

RES 
------- 
I'm 
+0

धन्यवाद एक बहुत है, यह पूरी तरह से काम करता है fine..AWESOME !!! –

+1

इस पर 4000 वर्ण – Skoffer

+2

@Skoffer हां पर एक सीमा है। इस सीमा को दूर करने के लिए 'dbms_xmlgen' पैकेज और विशेष रूप से 'कन्वर्ट()' फ़ंक्शन का उपयोग किया जा सकता है] (http://stackoverflow.com/questions/23683423/is-oracles-extract-function-breaking-the-noentityescaping-in -the-xmlelement/23684068 # 23684068) –

2
SELECT dbms_xmlgen.convert(xmlagg(XMLELEMENT(E,'I''m' 
    ||':')).extract('//text()').getclobval() ,1) 
FROM dual; 

मैं:

+0

बहुत बहुत धन्यवाद! यह भी एक अच्छा है, लेकिन यह HUGECLOB में आउटपुट प्राप्त कर रहा है –