当前位置:七道奇文章资讯数据防范MySQL防范
日期:2011-01-25 22:43:00  来源:本站整理

搞定MySQL数据库中文模糊检索问题[MySQL防范]

赞助商链接



  本文“搞定MySQL数据库中文模糊检索问题[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在 MySQL下,在举行中文模糊检索时,常常会返回一些与之不相关的记录,如查找 "%a%" 时,返回的大概有中文字符,却没有a字符存在.本人从前也曾碰到过近似问题,经具体阅读MySQL的Manual,发现可以有一种办法很便利的办理并得到称心的后果. (m?]sPEA`a  
@@)V/fia  
  例子: jLihNH?R}  
B]|0dP;  
  但愿通过“标题”对新闻库举行检索,关键字大概包含是中英文,以下SQL语句: 2WXj>&d  
"T eLa |n  
QUOTE: !7"F`UE~>  
select id,title,name from achech_com.news where title like '%a%' 1$|CVhBb%  
pBW66B1h  
  :@AB/\  
  返回的后果,某些title字段肯定带了“a”关键字,而有些则只有中文,但也随之返回在检索后果中. at*5je  
yUg/^Q  
  办理办法,利用 BINARY 属性举行检索,如: )M#[w''=  
^" ';f|  
QUOTE: )g4wt[=_+  
select id,title,name from achech_com.news where binary title like '%a%' )NyFPh  
{S<bx9|_5  
Af D|wq3$  
  返回的后果较之前精确,但英文字母辨别大小写,故有时在检索如“Achech”及“achech”的后果是不一样的.知道了利用 BINARY 属性可以办理前面这个问题,再看看 MySQL 支持的UCASE 及 CONCAT 函数,此中 UCASE 是将英文全部转成大写,而CONCAT函数的作用是对字符举行衔接,以下是我们完好办理后的SQL 语句: ."_?j H  
^-<*gF-X^  
QUOTE: <g 4T+p  
select id,title,name from achech_com.news \Uhl4y/M  
where binary ucase(title) like concat('%',ucase('a'),'%') "+b2KV!ts  
N;{i#6n0  
G =Cwy  
  检索的步骤是先将属性指定为 BINARY ,以切确检索后果,而被 like 的 title内容存在大小写字母的大概,故先利用 ucase 函数将字段内容全部转换成大写字母,然后再举行 like 操作,而 like 的操作利用模糊办法,利用 concat的好处是传进来的可以是直接的关键字,不需求带“%”万用符,将“'a'”直接换成你的变量,在任何语言下都万事无忧了. 当然你也可以这么写: y<Zy>  
l.gP+~b+p  
QUOTE: hkM$w ~*  
select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%') ASs/]hs  
"2})CL2;b  
W{xuu2o*,  
  检索的后果还算称心吧,不过速度大概会因此而慢N毫秒.   以上是“搞定MySQL数据库中文模糊检索问题[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>轻松八句话 教会你完好搞定MySQL数据库</b>
  • 搞定MySQL数据库中文模糊检索问题
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .