Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyoal Nilai Lajur Dipisahkan Koma dengan Cekap untuk Nilai Khusus dalam Oracle 10g?

Bagaimana untuk Menyoal Nilai Lajur Dipisahkan Koma dengan Cekap untuk Nilai Khusus dalam Oracle 10g?

Barbara Streisand
Barbara Streisandasal
2024-10-30 11:23:03960semak imbas

How to Efficiently Query Comma-Separated Column Values for Specific Values in Oracle 10g?

Pertanyaan untuk Nilai Lajur Dipisahkan Koma dengan Nilai Tertentu

Dalam jadual di mana lajur mengandungi nilai dipisahkan koma yang mewakili kategori, terdapat adalah keperluan untuk mendapatkan semula baris berdasarkan kehadiran kategori tertentu. Walaupun menggunakan pernyataan LIKE mungkin mencukupi, terdapat kebimbangan mengenai kecekapan dan ketepatan.

Fungsi FIND_IN_SET(), walaupun didokumenkan dalam dokumentasi Oracle, tidak disokong dalam versi 10g. Akibatnya, pendekatan alternatif diperlukan untuk menanyakan nilai lajur yang dipisahkan koma dengan berkesan.

Penyelesaian yang menggunakan LIKE dengan pengubahsuaian untuk mengambil kira padanan separa dan koma adalah seperti berikut:

select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'

Walau bagaimanapun , pertanyaan ini terdedah kepada isu prestasi kerana penggunaan LIKE. Selain itu, ia menganggap bahawa nilai tidak mengandungi ruang atau koma, yang mungkin tidak selalu berlaku.

Untuk mengurangkan pengehadan ini, penyelesaian yang lebih cekap dan boleh dipercayai ialah menyusun semula jadual dengan memperkenalkan jadual kanak-kanak untuk kategori dan jadual pautan silang untuk mewujudkan hubungan dengan jadual utama. Pendekatan ini memberikan prestasi dan ketepatan yang lebih baik untuk menanyakan nilai lajur yang dipisahkan koma dengan nilai tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Nilai Lajur Dipisahkan Koma dengan Cekap untuk Nilai Khusus dalam Oracle 10g?. 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