Mysql处理字符串中的隐藏字符
前言
在项目中,数据插入的时候在很多场景下面都会造成数据插入的字符串中隐藏的无法肉眼可查的字符,此隐藏字符可能会影响到业务的查询
一、项目中出现的场景
bufferedReader.readLine()读取文件第一行时,会多出一个空格(65279 代表空格),此时如果业务尚未单独处理此字符,就会造成在数据中插入一条携带隐藏字符的字符串
二、解决步骤 -> Mysql
1.Hex函数让隐藏字符显示真身
SELECT hex(tran_no),tran_no FROM payment_record t WHERE hex(tran_no) LIKE ‘EFBBBF%’;
此时图中可知,第一个字段多了EFBBF的16进制字符,此字符就是隐藏的字符串
2.16进制的隐藏字符串转为10进制
EFBBF 转为10进制为 15711167
3、mysql处理
update payment_record set tran_no = REPLACE(tran_no, CHAR(15711167),'') WHERE hex(tran_no) LIKE 'EFBBBF%';
拿到步骤2中的隐藏字符10进制值,通过replace函数把隐藏的10进度值给替换成空串即可处理