Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mencari Nilai Khusus dalam Medan Dipisahkan Koma dalam MySQL?

Bagaimana untuk Mencari Nilai Khusus dalam Medan Dipisahkan Koma dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-08 00:01:03390semak imbas

How to Search for Specific Values in a Comma-Separated Field in MySQL?

Mencari dalam Medan Dipisahkan Koma dalam MySQL

Dalam MySQL, senario tertentu mungkin timbul apabila data disimpan dalam format dipisahkan koma , walaupun amalan yang disyorkan menasihati menentangnya. Ini menimbulkan cabaran apabila cuba melakukan carian tepat dalam medan tersebut. Pertimbangkan contoh berikut:

Jadual mengandungi medan dengan nilai daripada jadual lain yang disimpan sebagai senarai dipisahkan koma:

12,13,14,16

Tugas di tangan ialah mencari nilai khusus dalam ini medan menggunakan pertanyaan seperti:

SELECT ... WHERE field LIKE '%1%'

Walau bagaimanapun, disebabkan sifat data, pertanyaan sedemikian akan sepadan dengan hampir semua entri, kerana kebanyakan ID biasa berada dalam julat yang sempit.

Untuk menangani isu ini, carian yang lebih khusus diperlukan. Daripada menggunakan %1%, pertimbangkan untuk menggunakan %,1,% dalam keadaan SUKA. Ini akan memadankan nilai yang mengandungi 1 didahului dan diikuti dengan koma.

Malangnya, pendekatan ini mempunyai pengehadan untuk nilai pertama dan terakhir dalam senarai yang dipisahkan koma, kerana ia tidak akan dipadankan dengan corak.

Oleh itu, pendekatan berbeza adalah perlu. MySQL menyediakan fungsi berkuasa yang dipanggil FIND_IN_SET, yang membolehkan seseorang mencari dalam senarai yang dipisahkan koma:

SELECT ... WHERE FIND_IN_SET('1', field)

Menggunakan FIND_IN_SET akan mengembalikan kedudukan nilai yang ditentukan dalam senarai yang dipisahkan koma, atau 0 jika nilai tidak ada. Ini membolehkan carian yang tepat dan cekap walaupun dalam struktur data yang tidak ideal.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Nilai Khusus dalam Medan Dipisahkan Koma dalam MySQL?. 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