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

Oracle क्वेरी में XMLType नोड्स को संयोजित करें

concat() एसक्यूएल फ़ंक्शन दो मानों को जोड़ता है, इसलिए यह अर्धविराम को प्रत्येक निकाले गए मान में स्वतंत्र रूप से जोड़ रहा है। लेकिन आप वास्तव में परिणामों का स्ट्रिंग एकत्रीकरण करने की कोशिश कर रहे हैं (जो, संभवतः, वास्तव में दो से अधिक निकाले गए मान हो सकते हैं)।

आप निकालने के बजाय XMLQuery का उपयोग कर सकते हैं, और एक XPath string-join() . का उपयोग कर सकते हैं संयोजन करने के लिए कार्य करें:

XMLQuery('string-join(/A/B, ";")' passing xmltype(a.xml) returning content)

निश्चित एक्सएमएल एंड-नोड टैग के साथ डेमो:

-- CTE for sample data
with a (xml) as (
  select '<A><B>123</B><C>456</C><B>789</B></A>' from dual
)
-- actual query
select XMLQuery('string-join(/A/B, ";")' passing xmltype(a.xml) returning content) as result
from a;

RESULT
------------------------------
123;789

आप सभी व्यक्तियों को भी निकाल सकते हैं <B> XMLTable का उपयोग करके मान, और फिर SQL-स्तरीय एकत्रीकरण का उपयोग करें:

-- CTE for sample data
with a (xml) as (
  select '<A><B>123</B><C>456</C><B>789</B></A>' from dual
)
-- actual query
select listagg(x.b, ';') within group (order by null) as result
from a
cross join XMLTable('/A/B' passing xmltype(a.xml) columns b number path '.') x;

RESULT
------------------------------
123;789

जो आपको अधिक लचीलापन देता है और अन्य नोड मानों के आधार पर अधिक आसानी से समूहित करने की अनुमति देता है, लेकिन आपके उदाहरण मान के आधार पर यहां इसकी आवश्यकता प्रतीत नहीं होती है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इंस्टेंस पूल और टेराफॉर्म का उपयोग करके कई Oracle कंप्यूट इंस्टेंस को तैनात करें

  2. क्या Oracle कॉलम के लिए एक स्वचालित संशोधन समय स्टाम्प प्रकार है?

  3. Oracle में, क्या किसी दृश्य के माध्यम से किसी रिकॉर्ड को सम्मिलित करना या अद्यतन करना संभव है?

  4. ORA-29285 कैसे हल करें:फ़ाइल लिखने में त्रुटि

  5. कैसे JasperReports के साथ Oracle में बूँद स्तंभ से एक छवि को देखने के लिए?