Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Lajur VARCHAR Terhad dalam SQL untuk Padanan Substring?
Cara Membahagikan Lajur VARCHAR Terhad kepada Berbilang Nilai dalam SQL dan Melaksanakan Padanan Substring
Pertanyaan asal anda cuba menapis "AD_Ref_List" jadual berdasarkan senarai terhad nilai yang disimpan dalam jadual "xx_insert". Walau bagaimanapun, Oracle menganggap nilai yang dipisahkan koma sebagai satu rentetan, menyebabkan tiada baris yang sepadan.
Untuk menyelesaikan isu ini, pertimbangkan pendekatan berikut:
Menggunakan Padanan Substring Rentetan dengan Pembatas:
Balut kedua-dua nilai lajur dan senarai yang dibataskan dalam pembatas dan lakukan padanan subrentetan. Ini memastikan padanan tepat ditemui dalam senarai yang dibataskan.
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;
Menggunakan Ungkapan Biasa untuk Memisahkan Senarai Yang Dibataskan:
Ekstrak nilai individu daripada senarai yang dibataskan menggunakan ungkapan biasa dan subquery. Kemudian, lakukan padanan berasaskan nilai dalam pertanyaan utama.
SELECT Value FROM AD_Ref_List WHERE AD_Reference_ID = 1000448 AND value IN ( SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL ) FROM xx_insert WHERE xx_insert_id = 1000283 CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' ) );
Pertimbangan:
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Lajur VARCHAR Terhad dalam SQL untuk Padanan Substring?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!