今天在弄sql中发现一个问题,先上图,
如我们所见字符串'card'=0是相等的,为什么呢?如果是时间开发中的sql代码没有任何问题,查询处理的数据也是会有问题的,这个是很严重的事故!
在经历了百度查询MySQL中字符串与数字比较的坑 - 活在夢裡 - 博客园 (cnblogs.com)这篇文的解决了我的疑惑,以此来保留一下自己所犯的错误。
总的来说在比较的时候,String是可能会被转为数字的。
而对于‘card’部分不能截取出数字的字符串来说,转换的结果自然就是0了。
解决方案为:对数字部分进行转义CONCAT(0,'')
总结:尽量避免字符串与数字的直接比较