I'm a tree and wating for the spring!
|

【原创】在MySQL 中用 CONCAT 进行模糊查询遇到的西西

★作者:桐星豆博客   |  ★类别: MySQL   |  ★发布时间: 2011-01-22 19:15   |  ★更新时间: 2011-01-22 19:15   |  ★浏览次数:2096   |  ★ 评论(0)

需求:用模糊查询,通过一个关键字可以查文章编号id,文章标题title,内容content,发布时间start_time,修改时间update_time;即在一个文本框中可以查询表中所有字段,既可以查文章编号、发布时间、标题又可以查内容等等。

条件:在众多文章中,有一篇文章的标题为《JSTL - EL 表达式》;

问题:如果想输入小写“jstl”用示例SQL1是查不到数据的,必须输入大写的“JSTL”才能将它找出来。

示例SQL1:select * from Article a where concat(a.id,a.title,a.content,a.start_time,a.update_time) like '%jstl%' ;

示例SQL2:select * from Article a where concat(a.title,a.content) like '%jstl%' ;

如果用SQL2语句,不论大写还是小写的“jstl”都能将这条数据找出来,但是不满足查文章编号、发布和修改时间的需求。这是为什么?

原因:

  • 如果所有参数均为非二进制字符串,则结果为非二进制字符串。
  • 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。 

解决方案:

将参数归组,分为二进制字符串和非二进制字符串两组,如示例SQL3所示:

示例SQL3:select * from Article a where concat(a.title,a.content) like '%jstl%'  or concat(a.id,a.start_time,a.update_time) like '%jstl%';

本文知识点是鄙人总结出来的,如果有说得不对的地方欢迎大家踊跃拍砖!

原创作品,转帖请注明出处:桐星豆博客 http://www.xyxy.tk

请尊重他人的劳动果实,转载时务必注明出处! 请尊重他人的劳动果实,转载时务必注明出处!
转载请注明:文章转载自:桐星豆博客 [http://blog.txdou.com]
本文标题:【原创】在MySQL 中用 CONCAT 进行模糊查询遇到的西西
本文地址:http://blog.txdou.com/article45
分享到QQ空间 分享到腾讯朋友

  • 注意:“桐星豆博客”只会以“回复”的身份出现,不会以“咨询”的身份出现在留言或评论中,凡是以“咨询”的身份出现的留言或评论均为他人盗用!
  • 本站用以回复网友评论的唯一名称是“桐星豆博客”,除此外均无效,网友不得用此名进行相应文章的评论或回复!
  • 用户言论只代表其个人观点,不代表桐星豆博客的观点或立场!
  • 非诚勿扰,请友好如实的评论,杜绝谩骂、人格攻击等一切伤人言论,请严格遵循中华人民共和国法律法规!
  • 桐星豆博客拥有最终解释权,如有网友违规,本站将有权删除或屏蔽违规评论,情节严重者账户加入黑名单、永久封IP并报司法部门严惩!
  • 您一旦参与评论本站则默认为您已经同意以上条款,否则“非诚勿扰”,谢谢合作!

您的姓名或昵称: 选填
您的E-Mail地址: ☆必填--仅站长可见
您个人网站地址: 选填 ( 如果填写,请务必加上 http:// 或 https:// 等等 )
留言内容:

验证码: 点击重新生成验证码  [ ctrl + enter ]

CopyRight © 2009-2020 by 桐星豆 All Rights Reserved. ICP证:京ICP备20021364号