在MySQL上看到这个我有点困惑
SELECT 1='1x';给我一个
鉴于
SELECT 1='2x';给我0(如预期)
在进行二进制比较时
SELECT CAST(1 AS BINARY)=CAST('1x' AS BINARY);它给了我0(和预期的一样)。
问:我怎样才能阻止MySQL这样的行为?我想要'=‘作为100%的二进制相等。我不希望MySQL假设或猜测我可能想比较什么。
发布于 2017-04-25 11:50:36
当比较字符串和数字时,MySQL会自动进行转换。
所以这个字符串被转换成一个数字,它从左到右开始,然后尝试用它做一个数字。
所以
'1x' => 1
'x1' => 0 //because it does not start with a number on the left你不能改变这种行为。无论如何,您不应该比较不同的数据类型。所以这是你的错:)
https://stackoverflow.com/questions/43609848
复制相似问题