日期: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数据库中文模糊检索问题
@@)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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论