MySQL,相等还是不相等?

时间:2017-04-25 11:48:55

标签: mysql sql select

我在MySQL上看到这个有点困惑

SELECT 1='1x';

给了我1个

尽管

SELECT 1='2x';

给我0(如预期的那样)

进行二进制比较时

SELECT CAST(1 AS BINARY)=CAST('1x' AS BINARY);

它给了我0(也是预期的)

问题:如何阻止MySQL表现得像这样?我希望'='充当100%二进制相等。我不希望MySQL假设或猜测我想要比较的内容。

1 个答案:

答案 0 :(得分:4)

比较字符串和数字时,MySQL会自动进行转换。

因此字符串会转换为数字,并从左到右开始尝试从中生成一个数字。

所以

'1x' => 1
'x1' => 0 //because it does not start with a number on the left

你无法改变这种行为。而且你不应该比较不同的数据类型。所以这是你的错:)

相关问题