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

来源:林兴陆

在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的

记录,如查找 "-0x1.ebea4bfbffaacp-4%" 时,返回的可能有中文字符,却没有 a 字符存在。

本人以前也曾遇到过类似问题,经详细阅读 MySQL 的 Manual ,发现可以

http://www.gaodaima.com/46059.htmlMySQL中文模糊检索问题的解决方法_php

有一种方法很方便的解决并得到满意的结果。

例子:

・希望通过“标题”对新闻库进行检索,关键字可能包含是中英文,如

下 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".

欢迎大家阅读《MySQL中文模糊检索问题的解决方法_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~

php模糊搜索慢怎么办,MySQL中文模糊检索问题的解决方法_php相关推荐

  1. mysql全模糊_MySQL文模糊检索问题的解决方法

    在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的 记录,如查找 "-0x1.ebea4bfbffaacp-4%" 时,返回的可能有中文字符,却没有 a 字符存在 ...

  2. php mysql 读取中文数据的函数_php读取mysql中文数据出现乱码的解决方法

    以下是对php读取mysql中文数据出现乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下 1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了 解决方 ...

  3. 解决MySQL数据库中文模糊检索问题

    在 MySQL下,在进行中文模糊检索时,经常会返回一些与之不相关的记录,如查找 "%a%" 时,返 回的可能有中文字符,却没有a字符存在.本人以前也曾遇到过类似问题,经详细阅读My ...

  4. mysql 4 中文模糊查询_解决MySQL中文模糊查询问题

    解决MySQL中文模糊查询问题: 我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找 "%a%" 时,返回的可能有中文字符,却没有 a 字符存在.对于此 ...

  5. mysql 中文模糊查询_解决mysql中文模糊查询问题的方法

    mysql进行中文模糊检索时,经常会返回一些与之不相关的记录,如查找 "%a%" 时,返回的可能有中文字符,却没有a字符存在. 通过阅读MySQL的Manual,发现了一种可以满意 ...

  6. mysql中文模糊查询_解决MySQL中文模糊查询问题

    解决MySQL中文模糊查询问题: 我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找%a%时,返回的可能有中文字符,却没有a字符存在.对于此问题目前发现一种方法可以很方便解 ...

  7. mybatis向mysql数据库插入数据时,中文乱码显示为?解决方法

    mybatis向mysql数据库插入数据时,中文乱码显示为?解决方法 1.先查看库.表.表字符字段的编码格式.MySQL默认的库和表的字符编码都是latin1,而我们一般需要使用 utf8 //先查看 ...

  8. wind10MySQL闪退什么密码_win10系统Mysql输入密码后闪退的解决方法

    win10系统Mysql输入密码后闪退的问题发生概率较高.怎样来处理win10系统Mysql输入密码后闪退的问题,知道的人估计不多.本站针对win10系统Mysql输入密码后闪退的情况总结了一些解决的 ...

  9. 微信nickname乱码 php,php版微信公众平台回复中文出现乱码问题的解决方法

    本文实例分析了php版微信公众平台回复中文出现乱码问题的解决方法.分享给大家供大家参考,具体如下: 微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决 ...

最新文章

  1. 气泡图在开源监控工具中的应用效果
  2. python压缩包怎么安装-python – 如果安装的模块在zip文件的顶层添...
  3. 【资源总结】“十大深度学习方向” 专栏
  4. Windows XP 专业版与家庭版的区别
  5. sql中字段名中包含特殊字符的查询方法
  6. oracle 命令日志输出,ORACLE常用命令日志
  7. Scala.js:将Scala编译为JavaScript的编译器
  8. nodejs安装失败
  9. c语言实力,排序算法(更新ing)(C语言实现)(认真的不像实力派)
  10. gis计算机信息技术,信息技术(IT)对GIS的影响
  11. 自动挡车行驶当中,一个不小心碰到一键启动按钮,会怎样?
  12. 好程序员Python培训分享numpy简介
  13. Xilinx平台SRIO介绍(四)SRIO IP核配置
  14. C语言中有关字符串的库函数(3)
  15. “蓝凤凰”开网店,卖起了这么多高颜值又神奇的生物
  16. 初次使用Pikachu漏洞平台进行测试实验
  17. ACwing166数独与183靶形数独
  18. CAN总线技术在石油工程行业中的应用
  19. 使用jqury的心得
  20. Windows NDK安装及开发

热门文章

  1. 2020 最烂密码 TOP 200 大曝光,一不小心就中枪了
  2. 6还是5?大还是小?看完这些动图,感觉数学白学了
  3. 创校史纪录!26岁女博导发顶刊
  4. 吃亏受苦、前途未卜,Nature调查显示博士生三分之一可能抑郁
  5. 1年薪水=3盒药?一位癌症晚期病人告诉你:别乱买保险
  6. 百年来,清华为何都没有培养出诺贝尔奖得主?
  7. 还不起9亿?有人建议为范冰冰发行一款私募ABS产品融资!
  8. 花钱的最高境界是什么?
  9. (pytorch-深度学习)使用pytorch框架nn.RNN实现循环神经网络
  10. python中int和eval的区别_python中eval与int的区别浅析