如题,进行like模糊查询时,如果查询字串本身就含有一些通配符(比如%,-),我知道一个方法是使用 ESCAPE  转义。但是感觉通配符还挺多的吧,比如%,-,[],*等,要是在查询之前,使用正则表达式将查询字串含有的这些通配符都转义一次也挺麻烦的,不知道csdn高手们有没什么好的又比较方便的方法。比如MySql里的一些函数,试了下find_in_set也没得出正确的结果,高手帮忙!

解决方案 »

  1.   

    比如我想按新闻数据表的标题进行搜索,如果用户输入的标题XXX含有%,简单的进行like ‘%XXX%’模糊查询的话,结果就不对了~~~~
      

  2.   

    加返斜线给特殊字符或通过正则表达式去搜索。 SELECT * FROM pet WHERE name REGEXP "xxx$";
      

  3.   

    使用正则表达式,如果XXX也含有$不就也有问题了吗
      

  4.   

    鉴于此,建议做个函数,传入一字符串,对其中的特殊字符"%" "$" 等进行过滤,可以加一特殊字符辅表进行对照。函数返回一处理后的字符串,然后再 like concat('%',dbo.func(string),'%') 其它的也没有什么好办法了,全文索引大概满足不了你的需求,因为有特殊字符的存在。