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!