MYSQL字符串与数字比较出现的异常
先来例子,仔细感悟
#输出0也就是FALSE select 0 = '123abc'; #输出123 select cast('123abc' as signed); #123abc select cast('123abc' as char); #输出1也就是TRUE select 0 = 'abc'; #结果输出0 select cast('abc' as signed);
注意 字符串跟数字比较时,会转化为数字,
#如果首字符是数字,那么就保留数字到非数字那一位,首字符是其他的就会转为0
#所以我们比较时要注意类型,如果是不同类型的比较要转换成同一个类型(可以用cast)
当然这个情况应该不常见,
第一是一般不用字符串做关联和比较,
第二是比较的两个字段类型不同
我遇到这个属于表设计和历史遗留问题