MySQL5.7比较符在比较数字和字符串时的问题

数据库某张表的某个字段(比如说test_id)类型为varchar,默认值为'0'。

代码里SQL查询条件为 test_id != 0

这里很明显可以发现条件的类型不对,应该改成test_id != '0'

但是上面那个写法并不会报错,因为MySQL在比较数字和字符串的时候,会自动转换字符串和数字。

不过这个转换有点问题,具体的看下面的例子:

SELECT '8a' != 0 ,'a' != 0, '0c' != 0;

输出结果为:

'8a' != 0 'a' != 0 '0c' != 0
1 0 0

其中,1代表true,0代表false。

可以看出在比较时会将字符串转成数字,转换规则为如果字符串的值为数字,直接转成数字,否则认为是0。

你可能感兴趣的:(MySQL5.7比较符在比较数字和字符串时的问题)