Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Transformacja tabel / parsowanie pól w PL/SQL

Inną alternatywą jest użycie klauzuli model:

SQL> select id
  2       , value
  3    from codes
  4   model
  5         return updated rows
  6         partition by (id)
  7         dimension by (-1 i)
  8         measures (value)
  9         ( value[for i from 0 to length(value[-1])-length(replace(value[-1],',')) increment 1]
 10           = regexp_substr(value[-1],'[^,]+',1,cv(i)+1)
 11         )
 12   order by id
 13       , i
 14  /

        ID VALUE
---------- -------------------
        10 A
        10 B
        10 C
        11 A
        11 B
        12 A
        12 B
        12 C
        12 D
        12 E
        12 F
        13 R
        13 T
        13 D
        13 W
        13 W
        13 W
        13 W
        13 W
        13 S
        13 S

21 rows selected.

W tym wpisie na blogu napisałem do 6 alternatyw dla tego typu zapytań:http://rwijk.blogspot.com/2007/11/interval-based-row-generation.html

Pozdrawiam, Rob.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przepełnienia pól Oracle do SQL2005 DATETIME w SSIS

  2. Indeks na widoku (Oracle)

  3. Składnia starego łączenia zewnętrznego Oracle — po co umieszczać (+) po prawej stronie znaku równości w lewym sprzężeniu zewnętrznym?

  4. 2 sposoby konwersji na wielkie litery w Oracle

  5. Czy możemy używać wątków w PL/SQL?