sql中字符串与数字的比较坑

今天在弄sql中发现一个问题,先上图,

 

 如我们所见字符串'card'=0是相等的,为什么呢?如果是时间开发中的sql代码没有任何问题,查询处理的数据也是会有问题的,这个是很严重的事故!

 

在经历了百度查询MySQL中字符串与数字比较的坑 - 活在夢裡 - 博客园 (cnblogs.com)这篇文的解决了我的疑惑,以此来保留一下自己所犯的错误。

总的来说在比较的时候,String是可能会被转为数字的。

而对于‘card’部分不能截取出数字的字符串来说,转换的结果自然就是0了。

解决方案为:对数字部分进行转义CONCAT(0,'')

 

 

 

总结:尽量避免字符串与数字的直接比较

posted @ 2021-11-23 15:09  清华大咖  阅读(507)  评论(0编辑  收藏  举报