搞定MySQL数据库中文模糊检索问题

 我来答
华源网络
2022-11-22 · TA获得超过5557个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:143万
展开全部

  在 MySQL下 在进行中文模糊检索时 经常会返回一些与之不相关的记录 如查找 %a% 时 返回的可能有中文字符 却没有a字符存在 本人以前也曾遇到过类似问题 经详细阅读MySQL的Manual 发现可以有一种方法很方便的解决并得到满意的结果   例子   希望通过 标题 对新闻库进行检索 关键字可能包含是中英文 如下SQL语句

     QUOTE: select id title name from achech_ news where title like %a%   返回的结果 某些title字段确定带了 a 关键字 而有些则只有中文 但也随之返回在检索结果中   解决方法 使用 BINARY 属性进行检索 如

    QUOTE: select id title name from achech_ news where binary title like %a%

  返回的结果较之前正确 但英文字母区分大小写 故有时在检索如 Achech 及 achech 的结果是不一样的 知道了使用 BINARY 属性可以解决前面这个问题 再看看 MySQL 支持的UCASE 及 CONCAT 函数 其中 UCASE 是将英文全部转成大写 而CONCAT函数的作用是对字符进行连接 以下是我们完全解决后的SQL 语句

    QUOTE: select id title name from achech_ news where binary ucase(title) like concat( % ucase( a ) % )   检索的步骤是先将属性指定为 BINARY 以精确检索结果 而被 like 的 title内容存在大小写字母的可能 故先使用 ucase 函数将字段内容全部转换成大写字母 然后再进行 like 操作 而 like 的操作使用模糊方法 使用 concat的好处是传进来的可以是直接的关键字 不需要带 % 万用符 将 a 直接换成你的变量 在任何语言下都万事无忧了 当然你也可以这么写

lishixinzhi/Article/program/MySQL/201311/29449

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式