现象:对外提供的api接口,但是某一天查询接口突然出现了异常。
原因:查询到库里面的数据存在空格,而代码中有将数据转换成Map的处理,存在空格的数据为key,导致无法查询到。
解决方案:
select x_id from x_table where LENGTH(x_id) <> LENGTH(TRIM(x_id))
然后使用update语句来进行修改。
update x_table set x_id = TRIM(x_id) where LENGTH(x_id) <> LENGTH(TRIM(x_id))
思索:为什么库中的字段存在空格,但是查询语句中的字段不存在空格,依旧可以查到这条记录?
答:官方文档上说是MySQL校对规则属于PADSPACE,对CHAR和VARCHAR值进行比较都忽略尾部空格