在MySQL上看到这个有点疑惑
SELECT 1='1x';
给我 1
鉴于
SELECT 1='2x';
给我 0(如预期的那样)
进行二进制比较时
SELECT CAST(1 AS BINARY)=CAST('1x' AS BINARY);
它给了我 0(也符合预期)
问题:如何阻止 MySQL 的这种行为?我希望“=”作为 100% 二进制相等。我不希望 MySQL 假设或猜测我可能想要比较的内容。
最佳答案
当比较字符串和数字时,MySQL 会自动进行转换。
所以字符串被转换为一个数字,它从左到右开始并尝试从中生成一个数字。
所以
'1x' => 1
'x1' => 0 //because it does not start with a number on the left
你无法改变这种行为。而且您无论如何都不应该比较不同的数据类型。所以这是你的错:)
关于MySQL,等于还是不等于?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609848/