Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan MySQL dengan Cekap untuk Mencari Baris Memadankan Berbilang Nilai dalam Medan Rentetan?

Bagaimanakah Saya Boleh Menggunakan MySQL dengan Cekap untuk Mencari Baris Memadankan Berbilang Nilai dalam Medan Rentetan?

Barbara Streisand
Lepaskan: 2025-01-06 05:13:43
asal
912 orang telah melayarinya

How Can I Efficiently Use MySQL to Find Rows Matching Multiple Values in a String Field?

Meluaskan Skop Pengendali Suka MySQL

Pengendali Suka MySQL ialah alat yang berkuasa untuk memadankan corak dalam rentetan. Walau bagaimanapun, kadangkala ia boleh gagal apabila menangani kriteria pemadanan kompleks yang melibatkan berbilang nilai.

Pertimbangkan pertanyaan berikut, yang bertujuan untuk mendapatkan semula baris yang medan minat mengandungi sama ada sukan atau pub (atau kedua-duanya):

SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Salin selepas log masuk

Mengejutkan ramai, pertanyaan ini tidak menghasilkan hasil yang diingini. Sebabnya terletak pada cara pengendali Suka mengendalikan berbilang corak. Ia menggunakan setiap corak secara berurutan dan mengembalikan baris yang sepadan dengan kedua-dua corak. Dalam kes ini, pertanyaan berkesan menjadi:

SELECT * FROM table WHERE interests LIKE ('%sports%') AND interests LIKE ('%pub%')
Salin selepas log masuk

Memandangkan tiada nilai medan minat mengandungi kedua-dua "sukan" dan "pub", pertanyaan itu mengembalikan set kosong.

Penyelesaian: Menerima Teknik Padanan Alternatif

Untuk menyelesaikan isu ini, kita perlu menggunakan pendekatan yang berbeza. Pilihan pertama ialah untuk memisahkan corak menggunakan operator logik:

SELECT * FROM table WHERE interests LIKE '%sports%' OR interests LIKE '%pub%'
Salin selepas log masuk

Pertanyaan ini secara berkesan sepadan dengan baris yang mengandungi sama ada "sukan" atau "pub" dalam medan minat.

Lebih banyak lagi penyelesaian yang cekap ialah menggunakan operator REGEXP MySQL, yang membolehkan kami memadankan corak menggunakan ungkapan biasa:

SELECT * FROM table WHERE interests REGEXP 'sports|pub'
Salin selepas log masuk

Pertanyaan ini menggunakan '|' simbol (paip) untuk menyatakan bahawa medan minat harus sepadan sama ada "sukan" atau "pub."

Dengan menggunakan teknik pemadanan alternatif ini, kami boleh melanjutkan fungsi pengendali Suka dan mendapatkan semula baris yang memenuhi kehendak kami. kriteria.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan MySQL dengan Cekap untuk Mencari Baris Memadankan Berbilang Nilai dalam Medan Rentetan?. 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