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

oracle में REGEXP_REPLACE का उपयोग करके CSV मानों का अंतर

आप Oracles संग्रह का उपयोग कर सकते हैं। CAST() COLLECT() . के साथ जोड़ा गया उपयोगकर्ता द्वारा परिभाषित संग्रह में मानों को एकत्रित कर सकते हैं और फिर SET() डुप्लिकेट से छुटकारा मिलेगा। फिर आप LISTAGG() . का उपयोग कर सकते हैं संग्रह को एक स्ट्रिंग में बदलने के लिए।

Oracle सेटअप :

CREATE TYPE intlist IS TABLE OF INT;
/

CREATE TYPE stringlist IS TABLE OF VARCHAR2(4000);
/

CREATE TABLE table_name ( ColA NUMBER(5,0), ColB VARCHAR2(20) );
INSERT INTO table_name
  SELECT 1, 'POW' FROM DUAL UNION ALL
  SELECT 2, 'POW' FROM DUAL UNION ALL
  SELECT 1, 'POWPRO' FROM DUAL UNION ALL
  SELECT 1, 'PRO' FROM DUAL UNION ALL
  SELECT 2, 'PRO' FROM DUAL UNION ALL
  SELECT 1, 'PROUTL' FROM DUAL UNION ALL
  SELECT 1, 'TNEUTL' FROM DUAL UNION ALL
  SELECT 1, 'UTL' FROM DUAL UNION ALL
  SELECT 1, 'UTLTNE' FROM DUAL;

क्वेरी :

SELECT ( SELECT LISTAGG( COLUMN_VALUE, ',' )
                  WITHIN GROUP ( ORDER BY COLUMN_VALUE )
         FROM   TABLE( ColA ) ) AS ColA,
       ( SELECT LISTAGG( COLUMN_VALUE, ',' )
                  WITHIN GROUP ( ORDER BY COLUMN_VALUE )
         FROM   TABLE( ColB ) ) AS ColB  
FROM   (
  SELECT SET( CAST( COLLECT( ColA ORDER BY ColA ) AS INTLIST ) ) ColA,
         SET( CAST( COLLECT( ColB ORDER BY ColB ) AS STRINGLIST ) ) ColB
  FROM   table_name
);

आउटपुट :

ColA ColB
---- ---------------------------------------
1,2  POW,POWPRO,PRO,PROUTL,TNEUTL,UTL,UTLTNE


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Concat फ़ंक्शन काम नहीं कर रहा है - तर्कों की अमान्य संख्या

  2. Oracle SQL:all_tab_columns से चयन करने से मौजूदा कॉलम नहीं मिलता है

  3. SQLAlchemy के साथ Oracle सेवा नामों का उपयोग करना

  4. Oracle क्वेरी आउटपुट को json में बदलें (Oracle / NodeJS)

  5. Oracle में गतिशील तालिका विभाजन