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
Lepaskan: 2024-11-03 17:02:29
asal
447 orang telah melayarinya

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
Salin selepas log masuk

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

SELECT id FROM table WHERE categories LIKE '%c2%';
Salin selepas log masuk

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,%'
Salin selepas log masuk

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!

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