Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Lajur Dipisahkan Koma dengan Cekap untuk Nilai Tertentu?

Bagaimana untuk Menyoal Lajur Dipisahkan Koma dengan Cekap untuk Nilai Tertentu?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 17:02:29431semak imbas

How to Efficiently Query a Comma-Separated Column for a Specific Value?

Cara Menyoal Lajur Dipisahkan Koma untuk Nilai Tertentu tanpa Penyata SUKA Berlebihan

Jadual pangkalan data selalunya mempunyai lajur yang menyimpan dipisahkan koma senarai nilai. Untuk mendapatkan semula baris yang mengandungi nilai tertentu, seseorang boleh menggunakan pernyataan LIKE. Walau bagaimanapun, menggunakan berbilang kenyataan LIKE boleh menyusahkan dan tidak berkesan.

Kelemahan Menggunakan Penyata LIKE

Dalam contoh yang disediakan, jadual menyimpan kategori sebagai nilai dipisahkan koma:

ID | CATEGORIES
---------------
1  | c1
2  | c2,c3
3  | c3,c2
4  | c3
5  | c4,c8,c5,c100

Untuk mencari baris yang mengandungi "c2", seseorang boleh menggunakan:

SELECT id FROM table WHERE categories LIKE '%c2%';

Walau bagaimanapun, ini juga akan memadankan baris dengan "c2" di mana-mana dalam rentetan, menghasilkan positif palsu . Menggunakan berbilang pernyataan LIKE untuk menyemak kombinasi tertentu boleh membosankan dan terdedah kepada ralat.

Pendekatan Alternatif: Carian Dibatasi Koma

Pendekatan yang lebih cekap ialah menggunakan carian dihadkan koma:

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

Pertanyaan ini mencari nilai penuh yang dikelilingi oleh koma, memastikan padanan yang tepat. Walau bagaimanapun, ia datang dengan pengehadan kerana ia menganggap tiada ruang atau koma dalam nilai.

Penyelesaian Optimum: Jadual Kategori Asing

Untuk mengelakkan pengehadan ini dan meningkatkan prestasi, ia adalah amat disyorkan untuk membuat jadual kategori berasingan yang dipautkan ke jadual utama dengan perhubungan banyak-ke-banyak. Ini membolehkan pertanyaan dan manipulasi data yang cekap tanpa operasi rentetan yang menyusahkan atau risiko padanan palsu.

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