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!