Pangkalan Data Oracle: Menghuraikan Nilai Dipisahkan Koma dengan Cekap ke dalam Lajur
Artikel ini menangani cabaran yang kerap berlaku dalam Oracle: mengekstrak nilai individu daripada rentetan dipisahkan koma (CSV) ke dalam lajur yang berbeza. Memproses banyak nilai secara manual (cth., 255) adalah tidak praktikal; walau bagaimanapun, Oracle menawarkan penyelesaian yang cekap.
Satu kaedah berkesan menggunakan fungsi REGEXP_SUBSTR
, membolehkan pemisahan rentetan menggunakan ungkapan biasa. Struktur ungkapan biasa adalah penting untuk hasil yang tepat.
Pertimbangkan data ini:
<code>ROW | VAL ----------- 1 | 1.25, 3.87, 2, ... 2 | 5, 4, 3.3, ....</code>
Untuk memisahkan nilai ini kepada lajur individu, kita boleh menggunakan ungkapan REGEXP_SUBSTR
ini:
regexp_substr('1,2,3,,5,6', '(.*?)(,|$)', 1, 5, NULL, 1)
Ungkapan ini direka bentuk untuk:
.
) sifar atau lebih kali (*
), diikuti dengan koma (,
) atau penghujung rentetan ($
).Ungkapan yang dipertingkatkan ini mengendalikan unsur null dengan anggun, menghalangnya daripada mengganggu pengekstrakan nilai berikutnya.
Untuk meningkatkan kebolehgunaan semula, ungkapan biasa yang kompleks boleh dirangkumkan dalam fungsi tersuai, seperti yang digambarkan dalam perbincangan forum ini: https://www.php.cn/link/ae2cd9938873f32a93b6c858bf62f26b.
Ringkasnya, menggabungkan REGEXP_SUBSTR
dengan ungkapan biasa yang direka dengan baik menyediakan kaedah yang boleh dipercayai untuk menghuraikan nilai yang dipisahkan koma dalam Oracle, walaupun apabila berurusan dengan nilai nol atau tiada.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Lajur dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!