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

Oracle में अल्पविराम से अलग किए गए मानों को विभाजित करना

मेरे लिए पूरी तरह से काम करता है -

SQL> WITH dummy_table AS(
  2  SELECT '3862,3654,3828' dummy FROM dual
  3  )
  4  SELECT trim(regexp_substr(dummy,'[^,]+',1,Level)) AS dummycol
  5  FROM dummy_table
  6    CONNECT BY level <= LENGTH(REGEXP_REPLACE(dummy,'[^,]+'))+1
  7  /

DUMMYCOL
--------------
3862
3654
3828

SQL>

इसे हासिल करने के और भी कई तरीके हैं। स्प्लिट सिंगल कॉमा सीमांकित स्ट्रिंग को पंक्तियों में पढ़ें।

अपडेट करें जब एकल स्ट्रिंग मान के बजाय स्तंभ का उपयोग किया जाता है तो डुप्लिकेट के संबंध में। यहां चक्रीय लूप से छुटकारा पाने के लिए PRIOR क्लॉज में DBMS_RANDOM का उपयोग देखा

निम्न का प्रयास करें,

SQL> WITH dummy_table AS
  2    ( SELECT 1 rn, '3862,3654,3828' dummy FROM dual
  3    UNION ALL
  4    SELECT 2, '1234,5678' dummy FROM dual
  5    )
  6  SELECT trim(regexp_substr(dummy,'[^,]+',1,Level)) AS dummycol
  7  FROM dummy_table
  8    CONNECT BY LEVEL          <= LENGTH(REGEXP_REPLACE(dummy,'[^,]+'))+1
  9  AND prior rn                 = rn
 10  AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
 11  /

DUMMYCOL
--------------
3862
3654
3828
1234
5678

SQL>

अपडेट 2

दूसरा तरीका,

SQL> WITH dummy_table AS
  2    ( SELECT 1 rn, '3862,3654,3828' dummy FROM dual
  3    UNION ALL
  4    SELECT 2, '1234,5678,xyz' dummy FROM dual
  5    )
  6  SELECT trim(regexp_substr(t.dummy, '[^,]+', 1, levels.column_value)) AS dummycol
  7  FROM dummy_table t,
  8    TABLE(CAST(MULTISET
  9    (SELECT LEVEL
 10    FROM dual
 11      CONNECT BY LEVEL <= LENGTH (regexp_replace(t.dummy, '[^,]+')) + 1
 12    ) AS sys.OdciNumberList)) LEVELS
 13    /

DUMMYCOL
--------------
3862
3654
3828
1234
5678
xyz

6 rows selected.

SQL>


  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. उपयोगकर्ता सुरक्षा के लिए Oracle में प्रोफाइल बनाना

  4. pls_integer और binary_integer में क्या अंतर है?

  5. वैसे भी एक प्रमुख संस्करण क्या है?