MySQL 使用Select无法找到全部数据的一个奇葩经历

3 篇文章 0 订阅

appid 为1234567

select * from bills where appid = 1234567

和select * from bills where appid like '%1234567%'结果不一样!,前一句少了很多数据

猜想是数据中肯定存在某些肉眼不可见的字符。

于是:select hex(appid), appid where appid like '%1234567%'

发现多了一个值为EFBBBF的十六进制字符,因为数据本身就是从其他地方导入的,遇到这种隐秘问题真心恶心。

在windows系统里打开计算器,程序猿类型的计算器中输入EFBBBF,换算成十进制为15,711,167

update `bills` set appid = replace(appid,char(15711167),'')

排查程序搞了4个多小时,竟然是这么狗血的问题,这坑爬的,时间成本有点大。

PS:遇到类似情况的朋友,操作前,记得备份数据库,以免造成不必要的损失!

后来修改了导入数据的程序,使用正则表达式把肉眼不可见的字符全部过滤掉再导入。

其实程序里做过一次过滤,但是,实施导入的时候,鬼斧神工般的用原始数据导入了数据库而没有使用过滤过的数据进行导入。就造成了这么隐秘的问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值