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~这样就可以解决了

阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭