Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Lajur VARCHAR Terhad untuk Pertanyaan SQL yang Cekap?

Bagaimana untuk Memisahkan Lajur VARCHAR Terhad untuk Pertanyaan SQL yang Cekap?

Mary-Kate Olsen
Lepaskan: 2024-12-17 17:55:09
asal
745 orang telah melayarinya

How to Split a Delimited VARCHAR Column for Efficient SQL Queries?

Memisahkan Lajur VARCHAR kepada Berbilang Nilai dalam SQL

Masalah:

Apabila mendapatkan semula nilai daripada lajur VARCHAR menggunakan klausa IN, Oracle menukar senarai yang dibataskan kepada a rentetan petikan tunggal, menghalang sub-pertanyaan daripada sepadan dengan nilai individu.

Penyelesaian 1:

Balutkan nilai senarai yang dibataskan dalam klausa IN dengan pembatas yang sama digunakan dalam lajur VARCHAR. Contohnya, daripada menggunakan AD_Ref_List.Value IN ('CO','VO'), gunakan AD_Ref_List.Value IN (',' || 'CO' || ',' || 'VO' || ',') .

Penyelesaian 2 (Alternatif Di Mana Klausa):

Gunakan teknik berasaskan ungkapan biasa dengan REGEXP_SUBSTR berfungsi untuk mengekstrak nilai individu daripada senarai yang dibataskan pada tahap tertentu. Sebagai contoh, pertanyaan berikut menggunakan rekursi untuk memisahkan senarai yang dibataskan:

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, '[^,]+')
);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Lajur VARCHAR Terhad untuk Pertanyaan SQL yang Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan