快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

MYSQL中文模糊检索问题的解决方式

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

例子:
・希望通过“标题”对新闻库进行检索,要害字可能包含是中英文,如
下 SQL 语句:
select id,title,name from achech_com.news where title like \\\'%a%\\\'
返回的结果,某些 title 字段确定带了“a”要害字,而有些则只有中文,
但也随之返回在检索结果中。
解决方式,使用 BINARY 属性进行检索,如:
select id,title,name from achech_com.news where binary title like \\\'%a%\\\'
返回的结果较之前准确,但英文字母区分大小写,故有时在检索如“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(\\\'%a%\\\')
检索的结果还算满足吧,不过速度可能会因此而慢N毫秒喔。
返回类别: 教程
上一教程: LINUX下MSQL数据库开发技术
下一教程: MYSQL下创建数据库的两种方法

您可以阅读与"MYSQL中文模糊检索问题的解决方式"相关的教程:
· 实用的MYSQL中文问题的解决方案
· 关于MYSQL 4.1语言问题的完美解决方式
· MYSQL中文排序错误的解决方式
· 关于MYSQL5改密码后不能登录问题的解答
· MYSQL中文问题解决
    微笑服务 优质保证 索取样品