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

Oracle में अल्पविराम से अलग किए गए मानों को पंक्तियों में बदलें

सीएसवी को पंक्तियों में बदलने के लिए जटिल तरीकों को खोजने की तुलना में तालिका को सामान्य बनाना बहुत आसान होगा।

इस मामले में, आप इसका उपयोग कर सकते हैं:

with t(class_id, student, marks) as (
    select 1, 'tom,jam,tim', '55,65,75' from dual union all
    select 2, 'rim,gum,ram', '33,66,77' from dual
)
select
    t.class_id,
    regexp_substr(student,'[^,]+',1,x.column_value) student,
    regexp_substr(marks,'[^,]+',1,y.column_value) marks
from t, table(
    cast(
        multiset(
            select level
            from dual
            connect by level <= regexp_count(t.student,',') + 1
        ) as sys.odcinumberlist
    )
)x,table(
    cast(
        multiset(
            select level
            from dual
            connect by level <= regexp_count(t.marks,',') + 1
        ) as sys.odcinumberlist
    )
)y

उत्पादन:

+----------+------------+-------+
| CLASS_ID | STUDENT    | MARKS |
+----------+------------+-------+
| 1        | tom        | 55    |
+----------+------------+-------+
| 1        | tom        | 65    |
+----------+------------+-------+
| 1        | tom        | 75    |
+----------+------------+-------+
| 1        | jam        | 55    |
+----------+------------+-------+
| 1        | jam        | 65    |
+----------+------------+-------+
| 1        | jam        | 75    |
+----------+------------+-------+
| 1        | tim        | 55    |
+----------+------------+-------+
| 1        | tim        | 65    |
+----------+------------+-------+
| 1        | tim        | 75    |
+----------+------------+-------+
| 2        | rim        | 33    |
+----------+------------+-------+
| 2        | rim        | 66    |
+----------+------------+-------+
| 2        | rim        | 77    |
+----------+------------+-------+
| 2        | gum        | 33    |
+----------+------------+-------+
| 2        | gum        | 66    |
+----------+------------+-------+
| 2        | gum        | 77    |
+----------+------------+-------+
| 2        | ram        | 33    |
+----------+------------+-------+
| 2        | ram        | 66    |
+----------+------------+-------+
| 2        | ram        | 77    |
+----------+------------+-------+


  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 SQL डेवलपर में टेबल बनाते समय अपर्याप्त विशेषाधिकार

  4. एकाधिक स्तंभों पर शर्तों में शामिल हों बनाम समवर्ती स्तंभों पर एकल शामिल हों?

  5. एसक्लप्लस रिमोट कनेक्शन ओआरए-21561 दे रहा है