MySQL中的""和0

2023-09-02 18:56:01 浏览数 (1)

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篇文章分类和索引

0 人点赞