Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Rentetan Dibatasi Koma kepada Berbilang Baris dalam Oracle?
Pisah rentetan yang dipisahkan koma kepada berbilang baris dalam Oracle
Memisahkan rentetan dipisahkan koma kepada berbilang baris ialah tugas prapemprosesan dan analisis data biasa dalam Pangkalan Data Oracle. Walaupun terdapat banyak cara untuk mencapai ini, kita akan melihat satu kaedah yang mudah dan berkesan.
Salah satu cara ialah memanfaatkan ungkapan biasa Oracle dan menyambung mengikut fungsi. Pertimbangkan jadual berikut, di mana setiap rekod mengandungi ralat dipisahkan koma:
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1, Err2, Err3 |
109 | test2 | Err1 |
Matlamat kami adalah untuk mengekstrak setiap ralat ke dalam baris yang berasingan, menghasilkan perkara berikut:
名称 | 项目 | 错误 |
---|---|---|
108 | test | Err1 |
108 | test | Err2 |
108 | test | Err3 |
109 | test2 | Err1 |
Untuk melakukan ini, kami menggunakan pertanyaan hierarki dan regexp_substr untuk mengekstrak setiap ralat berdasarkan bilangan kejadian ralat. Pertanyaan berikut menunjukkan pendekatan ini:
<code class="language-sql">with temp as ( select 108 Name, 'test' Project, 'Err1, Err2, Err3' Error from dual union all select 109, 'test2', 'Err1' from dual ) select distinct t.name, t.project, trim(regexp_substr(t.error, '[^,]+', 1, levels.column_value)) as error from temp t, table(cast(multiset(select level from dual connect by level <= length(regexp_replace(t.error, '[^,]+')) + 1) as sys.OdciNumberList)) levels order by name</code>
Pertanyaan ini menggunakan koma untuk menggantikan panjang rentetan (regexp_replace) dan mekanisme pertanyaan hierarki untuk mencipta satu siri peringkat yang berbeza. Setiap tahap mewakili bilangan kejadian ralat dalam rentetan yang dipisahkan koma. Fungsi regexp_substr kemudian mengekstrak ralat berdasarkan kiraan kejadiannya dan set hasil akhir mengandungi output yang dikehendaki.
Kaedah ini menyediakan cara yang mudah dan cekap untuk memisahkan rentetan yang dipisahkan koma kepada berbilang baris dalam Oracle 10g dan lebih baru. Ia memanfaatkan keupayaan manipulasi rentetan yang berkuasa dan keupayaan pertanyaan hierarki Oracle untuk mencapai transformasi data yang diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Dibatasi Koma kepada Berbilang Baris dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!