永发信息网

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

答案:1  悬赏:0  手机版
解决时间 2021-10-22 01:22
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毫秒喔。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
智胜人生万能险退保
亚马孙的优惠券怎么用?有很多。
小孩从几个月开始一直到两岁多了还是有眼袋是
装修新房瓷砖的选择
在美国亚马逊开店一定要使用亚马逊物流吗
2014年以后交的五险一金能从工作地转到户籍地
老房子装修步骤有哪些?老房子怎么装修有什么
请问农村建房有房产证吗?谁能给点建议?
帮帮托管(上海闵行区)地址好找么,我有些事要
请问酒店大堂收银台价格是多少?柜台收银台价
婚前婚后是否有改变?有没有人跟我一样,感觉
朱阿根烧饼啥时候开始做
小麦玉米联合收割机那个牌子的好?我是山东省
南阳市光武驾驶员培训有限公司地址在什么地方
桃木与柚木有什么区别?他们都可以用来做家具
推荐资讯
枣阳市环宇通机动车检测有限公司地址在哪,我
窗帘纱是浅咖窗帘布是浅黄加金线?注意事项是
脸上有遗传性的雀斑我十六岁,脸上有遗传性的
宝宝6个月可以吃什么
猪肉能跟羊肉一起炖汤吗
求教大神!谁能告诉我智能家居智有哪些
澳大利亚要交房产税吗?谁对这个知道
电信装摄像头怎么收费
沙巴酒店需要自备洗漱用品么?
在阳江可以去哪里坐飞机?除了广州和深圳
谁知道老城的火车票代售点在哪啊
问问家居电器风水该如何摆放?有什么值得注意
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?