Memisahkan Nilai VARCHAR ke dalam Lajur Berasingan dalam Oracle
Untuk menangani keperluan transformasi pangkalan data yang biasa, pengguna sering mencari cara untuk menghuraikan nilai VARCHAR kepada yang berasingan lajur. Senario biasa melibatkan pengambilan ulasan daripada jadual, di mana setiap ulasan bermula dengan rentetan tertentu dan matlamatnya adalah untuk memisahkan ulasan kepada dua lajur yang berbeza.
Sebagai contoh, pertimbangkan nilai yang dikembalikan seperti:
COLUMN_ONE -------------------- 'D7ERROR username'
Di mana output yang dikehendaki sepatutnya:
COL_ONE COL_TWO -------------------- D7ERROR username
Adalah Definisi Lajur Mungkin Selepas Penstrukturan Set Keputusan?
Persoalan utama terletak pada sama ada ia boleh dilakukan untuk menentukan lajur baharu selepas set keputusan telah distrukturkan. Jawapannya bergantung pada ketekalan data.
Penyelesaian untuk Pemisah Konsisten
Dengan mengandaikan pembatas yang konsisten (cth., ruang tunggal) antara dua nilai yang dikehendaki, pertanyaan berikut boleh digunakan:
SELECT SUBSTR(t.column_one, 1, INSTR(t.column_one, ' ')-1) AS col_one, SUBSTR(t.column_one, INSTR(t.column_one, ' ')+1) AS col_two FROM YOUR_TABLE t
Pertanyaan ini memisahkan rentetan berdasarkan kejadian pertama daripada watak ruang.
Penyelesaian Regex untuk Pemisah Kompleks
Untuk senario yang lebih kompleks, Oracle 10g dan versi yang lebih baru menawarkan sokongan ekspresi biasa dan fungsi subrentetan regex. Ini memberikan lebih fleksibiliti dalam mengendalikan corak data berubah-ubah.
Tambahan Rujukan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Nilai VARCHAR kepada Berbilang Lajur dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!