Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Lajur VARCHAR Terhad dalam SQL untuk Padanan Substring?

Bagaimana untuk Memisahkan Lajur VARCHAR Terhad dalam SQL untuk Padanan Substring?

DDD
DDDasal
2024-12-26 08:03:11707semak imbas

How to Split a Delimited VARCHAR Column in SQL for Substring Matching?

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:

  1. Pilih pendekatan yang paling sesuai dengan prestasi dan keperluan data anda .
  2. Pastikan kedua-dua nilai lajur dan senarai yang dibataskan diformat secara konsisten dengan yang sama pembatas.
  3. Pertimbangkan untuk menggunakan prosedur atau fungsi tersimpan untuk merangkum logik pemisahan untuk kebolehgunaan semula dan penyelenggaraan yang lebih mudah.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn