《MySQL的隐式转换导致诡异现象的案例一则》文章中原始有段写的是,
代码语言:javascript复制上述例子中 "测试a" 会截成 "",因此 a=0 ,才会返回字段不为空的。
有朋友留言说,这个确定正确吗?"测试a"应该转成0吧,而不是""?
我认为这块写得有些模糊了,但是结论没错。
因为数据类型的问题,"测试a"会转成数值类型,MySQL自动截断,应该截成的是""(空),只是说""和0是相等的,通过CAST可以验证下,"测试a"和''(空)转换成数值类型都是0,
代码语言:javascript复制select cast('测试a' AS UNSIGNED), CAST('' AS UNSIGNED);
如果准确些,应该说的是"测试a"自动截成""(空),""和0是相等的,因此得到"a=0"。
做技术,还是得严谨一些。
近期更新的文章:
《MySQL的隐式转换导致诡异现象的案例一则》
《MySQL中用到了索引还很慢的一个SQL场景》
《什么是"金砖国家"?》
《最近碰到的一些问题》
《MySQL客户端指令用法的探索》
近期的热文:
《推荐一篇Oracle RAC Cache Fusion的经典论文》
《"红警"游戏开源代码带给我们的震撼》
文章分类和索引:
《公众号1200篇文章分类和索引》