动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

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

作者来源: 
阅读 1204 人次 , 2006-3-29 4:17:00 


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

 本文Tagsmysql  数据库  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:PHP如何透過ODBC來存取資料庫
· 下一篇:MySQL修改密码方法总结
· 一个手机开发的例子
· Windows 2000下安装PHP4及MySQL大揭密
· 同时上传100个文件上传的程序
· 将MySQL迁移到Microsoft SQL Server 2000
· 一个操作xml的类


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077