Rumah php教程 php手册 MySQL中文模糊检索问题的解决方法

MySQL中文模糊检索问题的解决方法

Jun 21, 2016 am 09:09 AM
like quot title

mysql|解决|问题|中文

MySQL中文模糊检索问题的解决方法
来源:林兴陆

在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的
记录,如查找 "-0x1.ebea4bfbffaacp-4%" 时,返回的可能有中文字符,却没有 a 字符存在。
本人以前也曾遇到过类似问题,经详细阅读 MySQL 的 Manual ,发现可以
有一种方法很方便的解决并得到满意的结果。

例子:
·希望通过“标题”对新闻库进行检索,关键字可能包含是中英文,如
下 SQL 语句:
select id,title,name from achech_com.news where title like '-0x1.ebea4bfbebe84p-4%'
返回的结果,某些 title 字段确定带了“a”关键字,而有些则只有中文,
但也随之返回在检索结果中。
解决方法,使用 BINARY 属性进行检索,如:
select id,title,name from achech_com.news where binary title like '-0x1.ebea4bfbebe84p-4%'
返回的结果较之前正确,但英文字母区分大小写,故有时在检索如“Achech”
及“achech”的结果是不一样的。
知道了使用 BINARY 属性可以解决前面这个问题,再看看 MySQL 支持的
UCASE 及 CONCAT 函数,其中 UCASE 是将英文全部转成大写,而 CONCAT 函
数的作用是对字符进行连接,以下是我们完全解决后的 SQL 语句:
select id,title,name from achech_com.news where binary ucase(title) like concat('%',ucase('a'),'%')
检索的步骤是先将属性指定为 BINARY ,以精确检索结果,而被 like 的 title
内容存在大小写字母的可能,故先使用 ucase 函数将字段内容全部转换成大
写字母,然后再进行 like 操作,而 like 的操作使用模糊方法,使用 concat
的好处是传进来的可以是直接的关键字,不需要带“%”万用符,将“'a'”直接
换成你的变量,在任何语言下都万事无忧了。
当然你也可以这么写:
select id,title,name from achech_com.news where binary ucase(title) like ucase('0x0.00020bfbebe08p-1022%')
检索的结果还算满意吧,不过速度可能会因此而慢N毫秒喔。

相关资料:
Relate:
20.16 Case Sensitivity in Searches
By default, MySQL searches are case-insensitive (although there are some character sets that are never case insensitive, such as czech). That means that if you search with col_name LIKE 'a%', you will get all column values that start with A or a. If you want to make this search case-sensitive, use something like INDEX(col_name, "A")=0 to check a prefix. Or use STRCMP(col_name, "A") = 0 if the column value must be exactly "A". 



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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

apa maksud tajuk apa maksud tajuk Aug 04, 2023 am 11:18 AM

Tajuk ialah makna yang mentakrifkan tajuk halaman web Ia terletak dalam teg dan teks yang dipaparkan dalam bar tajuk pelayar adalah sangat penting untuk pengoptimuman enjin carian dan pengalaman pengguna halaman web. Apabila menulis halaman web HTML, anda harus memberi perhatian kepada menggunakan kata kunci yang berkaitan dan penerangan yang menarik untuk menentukan elemen tajuk untuk menarik lebih ramai pengguna mengklik dan menyemak imbas.

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Apakah perbezaan antara REGEXP MySQL dan LIKE? Apakah perbezaan antara REGEXP MySQL dan LIKE? May 30, 2023 pm 01:58 PM

1. Perbezaan dalam kandungan yang sepadan memerlukan keseluruhan data dengan Suka, semua kandungan medan ini mesti memenuhi syarat-syarat sahaja; 2. Perbezaan dalam kedudukan sepadan: LIKE sepadan dengan keseluruhan lajur Jika teks yang dipadankan muncul dalam nilai lajur, LIKE tidak akan menemuinya dan baris yang sepadan tidak akan dikembalikan (melainkan kad bebas digunakan dalam nilai lajur). . Untuk melakukan padanan, jika teks yang dipadankan muncul dalam nilai lajur, REGEXP akan menemuinya, baris yang sepadan akan dikembalikan dan REGEXP boleh memadankan keseluruhan nilai lajur (kesan yang sama seperti SUKA). 3. Pernyataan SQL mengembalikan data yang berbeza daripada padanan LIKE: pernyataan SQL

Apakah maksud tajuk dalam HTML Apakah maksud tajuk dalam HTML Mar 06, 2024 am 09:53 AM

Tajuk dalam HTML memaparkan teg tajuk halaman web, yang membolehkan penonton mengetahui perkara utama halaman semasa, jadi setiap halaman web harus mempunyai tajuk yang berasingan.

Bagaimana untuk menggunakan operator LIKE pangkalan data mysql dalam python Bagaimana untuk menggunakan operator LIKE pangkalan data mysql dalam python May 31, 2023 pm 09:46 PM

Operator LIKE digunakan untuk mencari corak tertentu dalam lajur dalam klausa WHERE. Sintaks: SELECTcolumn_name(s)FROMtable_nameWHEREcolumn_nameLIKEpatternpattern Di sinilah templat yang ditentukan diletakkan dan "%" digunakan di sini, juga dipanggil aksara kad bebas %. Jika ia diletakkan di hadapan syarat, ia akan mencari data yang berakhir dengan.. .; contohnya: % Jika Li% diletakkan selepas keadaan, maka data yang bermula dengan... dicari sebagai contoh: Li%% Jika ia wujud sebelum dan selepas keadaan, maka data yang disertakan dicari; : %李% Titik pengetahuan kecil: ERROR1064 (42000):Youhaveane

Cara menggunakan Union untuk mengoptimumkan pernyataan Suka dalam MySQL Cara menggunakan Union untuk mengoptimumkan pernyataan Suka dalam MySQL May 31, 2023 pm 03:55 PM

Optimumkan kenyataan Suka dengan Kesatuan 1) Kadangkala, anda mungkin perlu menggunakan operator atau untuk perbandingan dalam pertanyaan. Apabila kata kunci atau digunakan terlalu kerap dalam klausa where, ia boleh menyebabkan pengoptimum MySQL tersilap memilih imbasan jadual penuh untuk mendapatkan semula rekod. Klausa kesatuan boleh membuat pertanyaan dilaksanakan dengan lebih pantas, terutamanya apabila salah satu pertanyaan mempunyai indeks yang dioptimumkan dan pertanyaan lain juga mempunyai indeks yang dioptimumkan. Sebagai contoh, apabila terdapat indeks pada nama_pertama dan nama_akhir masing-masing, laksanakan pernyataan pertanyaan berikut: mysql>select*fromstudentswherefirst_namelike'A

图片消失怎么解决 图片消失怎么解决 Apr 07, 2024 pm 03:02 PM

图片消失如何解决先是图片文件上传$file=$_FILES['userfile'];  if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

See all articles