Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

मैं xml . से सीडीएटीए मूल्य कैसे प्राप्त कर सकता हूं?

एक्स्ट्रेक्ट फ़ंक्शन को लंबे समय से हटा दिया गया है (कम से कम 11gR2 - उस दस्तावेज़ में नोट देखें)।

यदि आपके पास एकाधिक मान हैं और आप एक से अधिक देखना चाहते हैं तो आप XMLTable का उपयोग कर सकते हैं, जो सीडीएटीए शोर को हटा देता है (लेकिन आपके पास मानों में रिक्त स्थान होने के कारण ट्रिम की आवश्यकता हो सकती है):

select x.stu_name, x.birthday,
  trim(stu_name) as stu_name2, to_char(x.birthday,'YYYY-MM-DD') as birthday2
from your_table t
cross join xmltable ('/RESPONSE/INFO' passing t.doc
  columns
    stu_name varchar2(30) path 'STU_NAME',
    birthday date path 'BIRTHDAY'
) x
where x.stu_name like '%M%'
STU_NAME BIRTHDAY  STU_NAME2 BIRTHDAY2
-------- --------- --------- ---------
 Maria   12-MAR-12 Maria     2012-03-12

यदि आप किसी एकल मान को लक्षित कर रहे हैं तो आप xmlquery का भी उपयोग कर सकते हैं, जो आपके उद्धरण के करीब है:

select regexp_replace(
  xmlquery('/RESPONSE/INFO[contains(BIRTHDAY, "2012-03-12")]/STU_NAME/text()'
    passing doc
    returning content),
  '<!\[CDATA\[ *(.*?) *\]\]>', '\1') as stu_name
from your_table t
STU_NAME
--------
Maria

यहां मैंने उस जन्मदिन की तलाश की है जिसे आप नोड के भीतर टेक्स्ट के रूप में चाहते थे, और मेल खाने वाला नाम मिला; लेकिन जैसा कि अभी भी सीडीएटीए है, यह लगभग वैसा ही है जैसा आपके पास था। इसलिए, मैंने सीडीएटीए भाग को अलग करने के लिए नियमित अभिव्यक्ति का उपयोग किया है, हालांकि यदि प्रदर्शन चिंता का विषय है तो आप सबस्ट्र/इंस्ट्र का भी उपयोग कर सकते हैं।

db<>fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑरेकल एसक्यूएल डेवलपर को कॉल करने में बाधा की जांच करें

  2. आप Oracle प्रक्रिया से अच्छी तरह से स्वरूपित परिणाम कैसे प्राप्त करते हैं जो एक संदर्भ कर्सर देता है?

  3. java.sql.SQLException:श्रोता ने निम्न त्रुटि के साथ कनेक्शन से इनकार कर दिया:ORA-12519, TNS:कोई उपयुक्त सेवा हैंडलर नहीं मिला

  4. मैन्युअल रूप से ग्रहण में ग्लासफ़िश सर्वर को कैसे कॉन्फ़िगर करें

  5. एक निश्चित समय अंतराल पर कुल कार्य