Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Rentetan Dipisahkan Koma kepada Berbilang Baris dalam Oracle?
Dalam Oracle, anda boleh memisahkan rentetan yang dipisahkan koma kepada berbilang baris menggunakan gabungan ungkapan biasa dan pertanyaan hierarki. Berikut ialah panduan lengkap tentang cara mencapai matlamat ini:
Pernyataan Masalah:
Andaikan terdapat jadual dengan struktur berikut:
<code>名称 | 项目 | 错误 -------------- 108 | test | Err1, Err2, Err3 109 | test2 | Err1</code>
Anda ingin menukar lajur "ralat" kepada berbilang baris, hasilnya adalah seperti berikut:
<code>名称 | 项目 | 错误 -------------- 108 | test | Err1 108 | test | Err2 108 | test | Err3 109 | test2 | Err1</code>
Penyelesaian:
<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 <= regexp_count(t.error, ',')) as OdciNumberList)) levels ;</code>
Arahan:
select level from dual connect by level <= regexp_count(t.error, ',')
menjana urutan nombor yang panjangnya sama dengan bilangan koma dalam rentetan tambah satu (iaitu bilangan ralat). table()
dan cast()
menukar pertanyaan hierarki kepada koleksi senarai angka dan kemudian menjadi jadual. Ini akan menghasilkan baris dengan bilangan yang semakin meningkat sepadan dengan setiap baris dalam jadual TEMP. regexp_substr()
digunakan untuk mengekstrak nilai ralat tunggal berdasarkan nombor daripada langkah sebelumnya. Fungsi trim()
mengalih keluar sebarang ruang kosong di hadapan atau di belakang. Nota: Penyelesaian ini menggunakan jenis OdciNumberList dan mungkin memerlukan penetapan tetapan keserasian jika menggunakan versi Oracle lebih awal daripada 12c.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Dipisahkan Koma kepada Berbilang Baris dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!