sql中通配符的搜索

 

sql中有如下通配符

含义分别为

  % 包含零个或更多字符的任意字符串。

  _(下划线) 任何单个字符。

  [ ] 指定范围(例如 [a-f])或集合(例如 [abcdef])内的任何单个字符。

 

  [^] 不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符。


一般情况,在搜索框中输入:“_”(下划线)或者“%”(百分号),然后进行搜索,由于这两个字符是sql中的通配符,所以一般情况是会搜索到所有的结果,除非你已经考虑到了这个问题。

因为是通配符,所以按常理,需要将需要模糊查询的字符串转化成转义的字符串,写了一个方法,如下:

 

public static String processQuery(String queryParameter) {
      if (!StringUtil.isBlank(queryParameter)) {
         if (queryParameter.indexOf("%") >= 0) {
            return (queryParameter.replace("_", "\\_")).replaceAll("%",
                  "\\\\%").trim();
         } else {
            return (queryParameter).trim().replace("_", "\\_");
         }
      } else {
         return null;
      }
   }
 比方,你传入“%hha_haoao”,该方法会返回“\%hha\_haoao”
 在sql文件中使用关键字‘escape’ 

 

Sql代码 
  1. Select * from service  where name like '\%hha\_haoao' escape '\' ;  

即把%和_当作为普通的字符串,进行模糊搜索。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值