mysql 如何解决圆角字符模糊查询

mysql数据库是对大小写不敏感的,但是如果是圆角的大小写就会区分大小写,如何解决呢?


1.因为前端传来的一般都是半角,这里做一个转化,半角转全角下面是工具类

/**
 * 数据转换的工具类
 * @author haoHongBo
 *
 */
public class AsciiUtil {
 
 public static final char SBC_SPACE = 12288; // 全角空格 12288
 
 public static final char DBC_SPACE = 32; //半角空格 32
 
 // ASCII character 33-126 <-> unicode 65281-65374
 public static final char ASCII_START = 33;
 
 public static final char ASCII_END = 126;
 
 public static final char UNICODE_START = 65281;
 
 public static final char UNICODE_END = 65374;
 
 public static final char DBC_SBC_STEP = 65248; // 全角半角转换间隔
 
 public static char sbc2dbc(char src){
  if (src == SBC_SPACE) {
   return DBC_SPACE;
  }
 
  if (src >= UNICODE_START && src <= UNICODE_END) {
   return (char) (src - DBC_SBC_STEP);
  }
 
  return src;
 }
 
 /**
  * Convert from SBC case to DBC case
  *
  * @param src
  * @return DBC case
  */
 public static String sbc2dbcCase(String src) {
  if (src == null) {
   return null;
  }
  char[] c = src.toCharArray();
  for (int i = 0; i < c.length; i++) {
   c[i] = sbc2dbc(c[i]);
  }
  return new String(c);
 }
 
 public static char dbc2sbc(char src){
  if (src == DBC_SPACE) {
   return SBC_SPACE;
  }
  if (src <= ASCII_END) {
   return (char) (src + DBC_SBC_STEP);
  }
  return src;
 }
 
 /**
  * Convert from DBC case to SBC case.
  *
  * @param src
  * @return SBC case string
  */
 public static String dbc2sbcCase(String src) {
  if (src == null) {
   return null;
  }
 
  char[] c = src.toCharArray();
  for (int i = 0; i < c.length; i++) {
   c[i] = dbc2sbc(c[i]);
  }
 
  return new String(c);
 }
}

2.转换为全角的字母和数字,要和数据库忽略大小写

做一个.toLowerCase()方法,将原字符串,和转换为圆角的字符串,传到后台。


3.mybatis中进行查询

content like "%"#{autoVoiceData.content}"%" or LOWER(content) like "%"#{quanJiao}"%"

这段sql的前一段是mysql的正常查询,忽略大小写,后边部分是圆角的模糊查询,因为圆角是不忽略大小写的,所以要有一个LOWER()方法。


ok~这样就可以解决了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值