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

ओरेकल में अल्पविराम से अलग स्ट्रिंग को विभाजित करना काम नहीं कर रहा है

आपकी क्वेरी में समस्या यह है कि जहां क्लॉज केवल लेवल 1 पर लागू होगा, आगे नहीं।

नेस्टेड टेबल का उपयोग करके इसे आजमाएं:

WITH xtable AS (
         SELECT 1 ID, '116,117,169,170,173,175,9015,44008,44367,44446,45081,45083,46779,47161,47222' AGT FROM DUAL
         UNION ALL
         SELECT 2 ID, '456,789' AGT FROM DUAL
         UNION ALL
         SELECT 3 ID, '116,117,169,170,173,175,9015,44008,44367,44446,45081,45083,46779,47161' AGT FROM DUAL
     )      
  select regexp_substr(x.AGT,'[^,]+', 1, t.column_value) agt
  from xtable x cross join table(
    cast(
      multiset(
        select level
        from dual
        connect by level <= regexp_count(x.AGT,',') + 1
      )as sys.odcinumberlist
    )
  ) t
  where x.id = 3;

यह एक सामान्य उद्देश्य वाली क्वेरी है जिसका उपयोग आप बिना किसी क्लॉज के भी कर सकते हैं यदि आप उन सभी को एक साथ बदलना चाहते हैं।

Oracle 12c+ में, आप OUTER APPLY . का उपयोग कर सकते हैं समान प्रभाव और सरल सिंटैक्स प्राप्त करने के लिए:

WITH xtable AS (
         SELECT 1 ID, '116,117,169,170,173,175,9015,44008,44367,44446,45081,45083,46779,47161,47222' AGT FROM DUAL
         UNION ALL
         SELECT 2 ID, '456,789' AGT FROM DUAL
         UNION ALL
         SELECT 3 ID, '116,117,169,170,173,175,9015,44008,44367,44446,45081,45083,46779,47161' AGT FROM DUAL
     )      
  select regexp_substr(x.AGT,'[^,]+', 1, t.n) agt
  from xtable x
  outer apply (
        select level n
        from dual
        connect by level <= regexp_count(x.AGT,',') + 1
  ) t
  where x.id = 3; 


  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. एपेक्स एडमिन अकाउंट अनलॉक करें

  3. ORA-02014 को कैसे हल करें:DISTINCT, GROUP BY के साथ दृश्य से अद्यतन के लिए चयन नहीं कर सकता

  4. Oracle SQL में (+) क्या करता है?

  5. जावा ओरेकल VARCHAR2 के लिए खाली स्ट्रिंग मान लौटाता है