Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Lajur Dipisahkan Koma untuk Nilai Tertentu dalam Oracle 10g?

Bagaimana untuk Menyoal Lajur Dipisahkan Koma untuk Nilai Tertentu dalam Oracle 10g?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 07:28:021052semak imbas

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

Menyoal Lajur Dipisahkan Koma untuk Nilai Tertentu

Anda menghadapi cabaran pangkalan data biasa: menanya jadual dengan lajur dipisahkan koma untuk nilai kategori tertentu. Walaupun penyataan LIKE mungkin memberikan penyelesaian, ia boleh menjadi sangat bertele-tele dan tidak cekap.

Untuk menangani isu ini, penyelesaian berpotensi melibatkan fungsi FIND_IN_SET(). Walau bagaimanapun, dalam Oracle 10g, fungsi ini tidak tersedia, mengakibatkan ralat "pengecam tidak sah".

Alternatif yang lebih mantap kepada penyataan LIKE tersedia:

<code class="sql">select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'</code>

Pertanyaan ini mencari padanan tepat nilai carian dalam lajur yang dipisahkan koma. Walau bagaimanapun, adalah penting untuk memasukkan koma sebelum dan selepas nilai carian untuk mengambil kira nilai pada permulaan atau penghujung rentetan.

Walaupun berkesan, pertanyaan ini mungkin menghadapi pengehadan prestasi disebabkan oleh kelambatan yang wujud dalam LIKE, terutamanya apabila kad bebas terkemuka hadir.

Akhirnya, penyelesaian ideal untuk mengendalikan lajur yang dipisahkan koma adalah dengan mempertimbangkan penstrukturan semula data. Ini boleh melibatkan mencipta jadual kanak-kanak untuk kategori atau malah jadual berasingan untuk kategori yang dipautkan ke jadual utama melalui mekanisme pemautan silang. Dengan menormalkan data dengan cara ini, pertanyaan akan datang boleh menjadi lebih cekap dan tepat.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Lajur Dipisahkan Koma untuk Nilai Tertentu 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