Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencari Berbilang Rentetan Dengan Cekap Dalam Lajur MySQL?

Bagaimanakah Saya Boleh Mencari Berbilang Rentetan Dengan Cekap Dalam Lajur MySQL?

DDD
DDDasal
2025-01-11 19:41:42374semak imbas

How Can I Efficiently Search for Multiple Strings Within a MySQL Column?

Gunakan fungsi find_in_set MySQL untuk mencari berbilang rentetan

Fungsi find_in_set() MySQL membolehkan anda mencari rentetan tertentu dalam set rentetan yang disimpan dalam lajur. Walau bagaimanapun, ia hanya boleh mencari menggunakan rentetan carian tunggal.

Cabaran: Cari menggunakan berbilang rentetan

Anda mungkin menghadapi situasi di mana anda perlu mencari berbilang rentetan dalam satu set rentetan. Sebagai contoh, anda mungkin ingin menyemak sama ada pelanggan membeli produk tertentu yang tergolong dalam kategori tertentu. Dalam kes ini, hanya menggunakan find_in_set() tidak mencukupi.

Petua mensimulasikan find_in_set() untuk melaksanakan carian berbilang rentetan

Terdapat penyelesaian untuk mensimulasikan carian berbilang rentetan menggunakan find_in_set():

  1. Tambahkan koma pada permulaan dan penghujung lajur yang mengandungi set rentetan. Ini memastikan bahawa set dikelilingi oleh koma.
  2. Gunakan ungkapan biasa (REGEX) untuk mencari corak yang mengandungi rentetan carian yang dipisahkan oleh simbol paip (|). Watak paip mewakili OR logik, sepadan dengan mana-mana rentetan.

Perihalan ungkapan biasa:

  • "," - sepadan dengan koma pada permulaan koleksi.
  • setcolumn - Nama lajur yang mengandungi set rentetan.
  • "," - sepadan dengan koma di hujung set.
  • ," - sepadan dengan koma diikuti dengan petikan berganda.
  • (val1|val2|val3) - Rentetan carian yang dibatasi paip, disertakan dalam kurungan.
  • ," - sepadan dengan koma diikuti dengan petikan berganda.

Contoh:

Pertimbangkan pertanyaan berikut:

<code class="language-sql">SELECT *
FROM table
WHERE CONCAT(",", `product_set`, ",") REGEXP ",(electronics|clothing|accessories),";</code>

Dalam pertanyaan ini, lajur set_produk mengandungi senarai produk yang dipisahkan koma yang dibeli oleh pelanggan. Ungkapan REGEXP menyemak sama ada koleksi mengandungi mana-mana tiga rentetan carian ini: "elektronik", "pakaian" atau "aksesori".

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Berbilang Rentetan Dengan Cekap Dalam Lajur 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