Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL选择等于条件作为相似条件工作_Mysql - Fatal编程技术网

MySQL选择等于条件作为相似条件工作

MySQL选择等于条件作为相似条件工作,mysql,Mysql,今天,当我使用查询时,得到了奇怪的结果 SELECT id, zip FROM `Locations` WHERE zip = '4000XXXXX' 它只获取id和邮政编码,其中邮政编码应等于条件。 模式: 我在表中有zip值为4000的行,这个查询的预期结果是无结果 Simply-equals条件的工作原理类似于有字符串且列类型为int的条件。发生了什么 您希望字符串和int的结果是什么 为了进行有意义的比较,MySql尝试通过取最左边的数字将字符串转换为int。 在本例中,强制转换的结

今天,当我使用查询时,得到了奇怪的结果

 SELECT id, zip FROM `Locations` WHERE zip = '4000XXXXX'
它只获取id和邮政编码,其中邮政编码应等于条件。 模式:

我在表中有zip值为4000的行,这个查询的预期结果是无结果

Simply-equals条件的工作原理类似于有字符串且列类型为int的条件。发生了什么

您希望字符串和int的结果是什么

为了进行有意义的比较,MySql尝试通过取最左边的数字将字符串转换为int。 在本例中,强制转换的结果为4000,因此您将得到zip=4000的所有行,您希望字符串和int的结果是什么

为了进行有意义的比较,MySql尝试通过取最左边的数字将字符串转换为int。
在本例中,强制转换为4000,因此您将从一个点获得zip=4000的所有行,这是有意义的,从另一个点来看,它没有任何行,因为equals应该是equals。@kxyz,字符串隐式强制转换为数字后,它是完全相等的。另请参见。从一个角度看,它是有意义的,从另一个角度看,它没有任何as equals应该是equals。@kxyz,在字符串隐式转换为数字后,它是完全相等的。另请参见。请注意,对于美国邮政编码而言,INT不是合适的数据类型,实际上它本身不是一个数值,而是一个具有有效字符值[0-9]的5、9或10个字符的字符串值,如果是10个字符,则在第6位也是。更合适的数据类型是CHAR9 COLLATE ascii_bin或5或10。ASCII排序更有效,因为它永远不会是多字节的。如果你把一串数字当作一个数字来对待,你就不会有一贯的理智行为,因为它实际上不是一个数字——它看起来只是一个。是的,你完全正确,谢谢。Int type是错误的。请注意,Int不是适用于美国邮政编码的数据类型,因为美国邮政编码本身不是一个数值,而是一个具有有效字符值[0-9]的5、9或10个字符的字符串值,如果是10个字符,则在位置6处也是。更合适的数据类型是CHAR9 COLLATE ascii_bin或5或10。ASCII排序更有效,因为它永远不会是多字节的。如果你把一串数字当作一个数字来对待,你就不会有一贯的理智行为,因为它实际上不是一个数字——它看起来只是一个。是的,你完全正确,谢谢。Int类型错误地出现在那里。
zip int(11)