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

Oracle में एकाधिक कॉलम से मान जोड़ना

SQL Fiddle

Oracle 11g R2 स्कीमा सेटअप :

CREATE TABLE test (col1, col2, col3, col4, col5 ) AS
          SELECT 1, 'A', 'B', 'C', 'D' FROM DUAL
UNION ALL SELECT 2, 'A', 'B', 'C', NULL FROM DUAL
UNION ALL SELECT 3, 'C', 'A', NULL, NULL FROM DUAL
UNION ALL SELECT 4, 'D', 'A', 'C', NULL FROM DUAL
UNION ALL SELECT 5, NULL, NULL, NULL, NULL FROM DUAL
UNION ALL SELECT 6, NULL, NULL, NULL, 'A' FROM DUAL
UNION ALL SELECT 7, 'B', NULL, NULL, 'A' FROM DUAL
UNION ALL SELECT 8, NULL, 'C', NULL, 'A' FROM DUAL;

क्वेरी 1 :

अगर कोई NULL नहीं है अन्य मानों के बीच मान (यह 7 और 8 पंक्तियों में एकाधिक अल्पविराम पेश करेगा):

SELECT col1,
       TRIM( ',' FROM col2||','||col3||','||col4||','||col5 ) AS col2
FROM   test

परिणाम :

| COL1 |    COL2 |
|------|---------|
|    1 | A,B,C,D |
|    2 |   A,B,C |
|    3 |     C,A |
|    4 |   D,A,C |
|    5 |  (null) |
|    6 |       A |
|    7 |   B,,,A |
|    8 |    C,,A |

अंतिम दो प्रश्न सभी उदाहरणों के लिए काम करेंगे:

प्रश्न 2 :

SELECT col1,
       TRIM( ',' FROM col2 || NVL2( col3, ','||col3, NULL ) || NVL2( col4, ','||col4, NULL ) || NVL2( col5, ','||col5, NULL ) ) AS col2
FROM   test

परिणाम :

| COL1 |    COL2 |
|------|---------|
|    1 | A,B,C,D |
|    2 |   A,B,C |
|    3 |     C,A |
|    4 |   D,A,C |
|    5 |  (null) |
|    6 |       A |
|    7 |     B,A |
|    8 |     C,A |

क्वेरी 3 :

SELECT col1,
       REGEXP_REPLACE( col2||','||col3||','||col4||','||col5, '(^|,),+|,+($)', '\1' ) AS col2
FROM   test

परिणाम :

| COL1 |    COL2 |
|------|---------|
|    1 | A,B,C,D |
|    2 |   A,B,C |
|    3 |    C,A, |
|    4 |   D,A,C |
|    5 |  (null) |
|    6 |       A |
|    7 |     B,A |
|    8 |     C,A |


  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 SQL - स्तंभ में पिवट तालिका पंक्तियाँ और पिवट में उप क्वेरी का उपयोग करें

  4. Oracle APEX में BLOB टाइप कॉलम का प्रयोग

  5. PHP में कक्षा 'पीडीओ' प्राप्त करने में ओरेकल डीबी से कनेक्ट करने का प्रयास करते समय त्रुटि नहीं मिली