Nah, Anda selalu dapat mencoba WHERE textcolumn LIKE "%SUBSTRING%"
- tetapi ini dijamin akan sangat lambat, karena kueri Anda tidak dapat melakukan pencocokan indeks karena Anda mencari karakter di sisi kiri.
Itu tergantung pada jenis bidang - textarea biasanya tidak akan disimpan sebagai VARCHAR, melainkan sebagai (semacam) bidang TEXT, sehingga Anda dapat menggunakan COCOK LAGI operator.
Untuk mendapatkan kolom yang tidak cocok, cukup beri tanda NOT di depan like:WHERE textcolumn NOT LIKE "%SUBSTRING%"
.
Apakah pencarian peka huruf besar-kecil atau tidak tergantung pada bagaimana Anda menyimpan data, terutama COLLATION apa yang Anda gunakan. Secara default, penelusuran tidak peka huruf besar/kecil.
Jawaban yang diperbarui untuk mencerminkan pembaruan pertanyaan:
Saya mengatakan bahwa melakukan WHERE field LIKE "%value%"
lebih lambat dari WHERE field LIKE "value%"
jika bidang kolom memiliki indeks, tetapi ini masih jauh lebih cepat daripada mendapatkan semua nilai dan memiliki filter aplikasi Anda. Kedua skenario:
1/ Jika Anda melakukan SELECT field FROM table WHERE field LIKE "%value%"
, MySQL akan memindai seluruh tabel, dan hanya mengirim bidang yang berisi "nilai".
2/ Jika Anda melakukan SELECT field FROM table
dan kemudian minta aplikasi Anda (dalam kasus Anda PHP) memfilter hanya baris dengan "nilai" di dalamnya, MySQL juga akan memindai seluruh tabel, tetapi mengirim semua bidang ke PHP, yang kemudian harus melakukan pekerjaan tambahan. Ini jauh lebih lambat daripada kasus #1.
Solusi:Silakan gunakan WHERE
klausa, dan gunakan EXPLAIN
untuk melihat pertunjukannya.