当前位置:  数据库>mysql

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

    来源: 互联网  发布时间:2014-09-06

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

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

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

  以下为引用的内容:


  
Code:
select id,title,name from achech_com.news where title like '%a%'


  返回的结果,某些title字段确定带了“a”关键字,而有些则只有中文,但也随之返回在检索结果中。

  解决方法,使用 BINARY 属性进行检索,如:

  以下为引用的内容:


  
Code:
select id,title,name from achech_com.news where binary title like '%a%'


  返回的结果较之前正确,但英文字母区分大小写,故有时在检索如“Achech”及“achech”的结果是不一样的。知道了使用 BINARY 属性可以解决前面这个问题,再看看 MySQL 支持的UCASE 及 CONCAT 函数,其中 UCASE 是将英文全部转成大写,而CONCAT函数的作用是对字符进行连接,以下是我们完全解决后的SQL 语句:


  
Code:
select id,title,name from achech_com.news

  where binary ucase(title) like concat('%',ucase('a'),'%')

  检索的步骤是先将属性指定为 BINARY ,以精确检索结果,而被 like 的 title内容存在大小写字母的可能,故先使用 ucase 函数将字段内容全部转换成大写字母,然后再进行 like 操作,而 like 的操作使用模糊方法,使用 concat的好处是传进来的可以是直接的关键字,不需要带“%”万用符,将“'a'”直接换成你的变量,在任何语言下都万事无忧了。 当然你也可以这么写:


  
Code:
select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%')


  检索的结果还算满意吧,不过速度可能会因此而慢N毫秒。

    
 
 

您可能感兴趣的文章:

  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 我的rh linux 8 不支持中文,中文显示乱码,该安装什么?或怎么解决?
  • 请教:关于英文,简体中文,繁体中文在JSP/JAVA中的整体解决方案!!!
  • Get中文乱码IE浏览器Get中文乱码解决方案
  • 请问各位,我装了Mandrake Linux 10.1版,选的简体中文,可是进去后菜单的中文都是方格,怎么解决啊?
  • 问题3:如何解决linux hat 9.0 shell下中文乱码问题?如何输入中文?
  • zip包在中文centos上解压后, 其中如果有中文文件名则为乱码, 怎么解决??
  • 请问:Linux不能显示U盘中中文文件名,但能显示中文的内容?怎么解决?
  • 我在Red Hat9下装netbeans中文装,可是在安装时和安装后界面中的中文一直是□形状,要怎么解决。
  • 请教:关于英文,简体中文,繁体中文在JSP/JAVA中的整体解决方案!!!!!
  • turbolinux10中原来是英文操作系统,现在想变成支持中文,请问有什么好方法,如果能通过增加中文包来解决,请提供一点详细的资料。
  • 我安装redhat linux9.0,选择简体中文,为什么在命令行模式下的中文显示为乱码呢,如何解决?
  • php网页标题中文乱码如何解决
  • Java国际化时怎么不能正确读取.properties文件中的中文字符串,如何解决其中的中文问题?
  • !!!!我的redhat9.01是简体中文版的,但文件名和xpdf不能显示中文. 请问如何解决?
  • 如何解决weblogic的中文问题
  • Solaris Sparc 9 中文乱码解决?
  • 为什么RH9不能显示中文,怎么解决?????
  • Android Studio的中文乱码问题解决方法
  • 安装Redhat选者简体中文,执行Xconfigurator,屏幕上看到乱码,如何解决?
  • 大家好.我的OPEN OFFICE 不能显示中文,应该如何解决呀?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求数据库解决方案===求数据库解决方案
  • Linux下Oracle数据库,dbstart持续不动,数据库无法启动解决
  • 从Access数据库读大块数据问题,为什么5119字节左右是极限,怎么解决??
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • oracle 实际值超过数据库某个字段指定长度报错解决
  • 读取sybase数据库中数据出现乱码的问题如何解决?
  • 有谁知道policytool是干什么的,能解决applet访问数据库的问题吗??100分,跟贴有分!
  • 使用EntityBean将中文存入数据库时出现乱码,如何解决?
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • 谁能帮我解决从数据库中取数据和下拉框连动结合的问题,分数双倍奉上!
  • SQLServer 数据库变成单个用户后无法访问问题的解决方法
  • 数据库中缓冲池的java解决
  • 属性owner不可用于数据库xxx的解决方法
  • sql server2012附加数据库问题解决方法
  • JSP高效访问数据库的解决方案
  • mysql下普通用户备份数据库时无lock tables权限的解决方法
  • 查询图片,图片文件存放在数据库中好,还是存放路径好,是否有更好的解决办法
  • sqlserver数据库迁移后,孤立账号解决办法
  • 登录oracle数据库时密码忘记的解决方法
  • 我用jbuilder调用oracle的数据库,但其中的中文显示的是乱码,怎么解决?
  • secureCRT下Linux终端汉字乱码解决方法
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 解决 select 挡住div的解决方法
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决!解决!求助如何安装多系统!
  • andriod中UIScrollView无法正常滚动的解决方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3