mysql中的 0

前几天在写sql的时候遇到一个问题,查出来的数据跟理想的完全不一致。这里记录一下

 

我要查询type类型为0的数据,- 的数据也出来了。具体的数据库的信息如下。

 首先想到的是,数据类型的问题,sql语句里面写的  type=0, 这里是int 类型,再看一下数据库字段类型。

果然,type是varchar类型,与sql里面的不一致。 mysql会对数据类型自动进行转换,这也是为什么sql写的int类型,却可以到数据的原因。但是为什么 - 的数据也出来了呢?

是不是mysql在类型转化的时候,将非数字字符转换成了0呢?

果然,进行转化的时候,非数字类型字符串被转换成了0,数字开头的字符串仅保留了数字。

那这个转化规则可以理解为,字符串转换成数字进行比较。转换肯定耗费性能,也会导致索引失效!索引失效的问题

 mysql 的容错还体现在别的地方,比如

select 1/0 并不会报错,

这种机制究竟是好是坏还需在具体场景中得出结论,总之,代码严谨一定是好的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值