Memisahkan Nilai Lajur VARCHAR dalam SQL
Dalam SQL, jenis data VARCHAR menyimpan rentetan aksara panjang berubah-ubah. Apabila berurusan dengan lajur VARCHAR, nilai lajur mungkin perlu dibahagikan kepada berbilang nilai individu.
Andaikan anda mempunyai pernyataan SQL SELECT seperti ini:
SELECT AD_Ref_List.Value FROM AD_Ref_List WHERE AD_Ref_List.AD_Reference_ID= 1000448
Pernyataan ini mengembalikan semua nilai daripada lajur Nilai dalam jadual AD_Ref_List di mana lajur AD_Reference_ID adalah sama dengan 1000448. Hasilnya mungkin kelihatan seperti ini:
Value |
---|
CO,VO |
Dalam hasil ini, lajur Nilai mengandungi senarai nilai yang dipisahkan koma. Untuk menapis hasil dengan lebih lanjut, anda mungkin mahu membahagikan nilai ke dalam baris individu, seperti:
Value |
---|
CO |
VO |
Salah satu cara untuk mencapai ini ialah menggunakan operator IN, seperti ini:
SELECT AD_Ref_List.Value FROM AD_Ref_List WHERE AD_Ref_List.AD_Reference_ID= 1000448 AND AD_Ref_List.Value IN (SELECT xx_insert.XX_DocAction_Next FROM xx_insert WHERE xx_insert_id = 1000283 ) ;
Walau bagaimanapun, pertanyaan ini mungkin tidak mengembalikan baris kerana Oracle menganggap senarai nilai sebagai rentetan tunggal, bukan sebagai nilai individu. Untuk membetulkannya, anda boleh menggunakan teknik berikut:
SELECT r.Value FROM AD_Ref_List r INNER JOIN xx_insert x ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' ) WHERE r.AD_Reference_ID = 1000448 AND x.xx_insert_id = 1000283;
Pertanyaan ini menggunakan operator LIKE untuk menyemak sama ada nilai daripada jadual AD_Ref_List ialah subrentetan senarai nilai daripada jadual xx_insert. Ini akan mengembalikan hasil yang diingini, dengan setiap nilai dalam lajur Nilai dipaparkan sebagai baris yang berasingan.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Nilai Lajur VARCHAR yang Dipisahkan Koma dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!