Cara Menukar Lajur Dipisahkan Koma kepada Berbilang Baris dalam Db2
Banyak aplikasi memerlukan data disimpan dalam struktur jadual hubungan, di mana setiap rekod mewakili entiti unik dan atributnya. Walau bagaimanapun, kadangkala data mungkin distrukturkan secara berbeza, seperti dalam format yang dipisahkan koma dalam satu lajur. Mengubah data sedemikian kepada struktur hubungan boleh menjadi mencabar, tetapi Db2 menawarkan penyelesaian menggunakan SQL rekursif.
Mari kita pertimbangkan contoh di mana jadual mengandungi lajur dengan nilai dipisahkan koma:
Id | FK_ID | Reference ----------------------- 1 2100 GI2, GI32 2 2344 GI56
Matlamat kami adalah untuk mengubah data ini menjadi jadual dengan berbilang baris, di mana setiap baris mewakili yang berbeza rujukan:
Id | FK_ID | Reference ----------------------- 1 2100 GI2 2 2100 GI32 3 2344 GI56
Pertanyaan SQL rekursif di bawah mencapai transformasi ini:
WITH unpivot (lvl, id, fk_ref, reference, tail) AS ( SELECT 1, id, fk_ref, CASE WHEN LOCATE(',',reference) > 0 THEN TRIM(LEFT(reference, LOCATE(',',reference)-1)) ELSE TRIM(reference) END, CASE WHEN LOCATE(',',reference) > 0 THEN SUBSTR(reference, LOCATE(',',reference)+1) ELSE '' END FROM yourtable UNION ALL SELECT lvl + 1, id, fk_ref, CASE WHEN LOCATE(',', tail) > 0 THEN TRIM(LEFT(tail, LOCATE(',', tail)-1)) ELSE TRIM(tail) END, CASE WHEN LOCATE(',', tail) > 0 THEN SUBSTR(tail, LOCATE(',', tail)+1) ELSE '' END FROM unpivot WHERE lvl < 100 AND tail != '') SELECT id, fk_ref, reference FROM unpivot
Pertanyaan ini menyahpangsi dan secara berulang memisahkan nilai yang dipisahkan koma kepada baris yang berasingan. Hasilnya ialah jadual hubungan dalam format yang dikehendaki. Nota: pertanyaan belum diuji dan mungkin memerlukan pelarasan kecil.
Atas ialah kandungan terperinci Bagaimana untuk Menyahpivot Nilai Dipisahkan Koma menjadi Berbilang Baris dalam Db2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!