mysql数据类型使用int类型和string类型

select * from user where user_id = 1;  
select * from user where user_id = '1';

我在数据库里
定义的是int型,为啥都能查到数据?

image.png

阅读 4.4k
2 个回答

mysql的比较运算过程中,遇到字符串和数值的比较时,会自动进行转换。具体可以参照comparison-operators章节

不同类型的值进行比较运算,中间需要经历转换过程,不但效率低下,还会影响索引的使用。且可能存在一些意想不到的情况,诸如

select '10ab'=10; # 结果是True

mysql的容错,不过这样不好,应该按照第一个写法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题