这个问题在这里已经有答案了:
mysql:为什么将“string”与0进行比较会得到true(3个答案)两年前关门了。我有一个varchar字段状态,其值为“new”、“close”等当我尝试sql时 select * from table where status=0 它返回的结果具有状态。它不返回空状态。在status=1时不返回任何结果。知道为什么吗 0 varchar检查失败? status='0' 工作正常
select * from table where status=0
0
status='0'
rjee0c151#
如果我理解正确,您希望获得status=null的所有行,因此应该执行以下操作:
SELECT * FROM table where status is Null;
您可以在这里查看:http://www.mysqltutorial.org/tryit/ 例如,在具有以下内容的表订单上:
SELECT * FROM orders where comments is Null;
或者如果你想要你应该使用的网站
SELECT * FROM orders where comments is not Null;
一般来说,不应该将varchar字段与数字(如0或1)进行比较编辑:你为什么认为这是错的?只是和你想象的不同,请看:https://dev.mysql.com/doc/refman/8.0/en/type-conversion.html -mysql非常努力地转换和比较您在查询中给出的内容。因此,在您的示例中,如果您有一个status='1'的行,那么您的查询将产生该行,正如该链接中引用的那样:有许多不同的字符串可以转换为值1,例如“1”、“1”或“1a”)。
1条答案
按热度按时间rjee0c151#
如果我理解正确,您希望获得status=null的所有行,因此应该执行以下操作:
您可以在这里查看:http://www.mysqltutorial.org/tryit/ 例如,在具有以下内容的表订单上:
或者如果你想要你应该使用的网站
一般来说,不应该将varchar字段与数字(如0或1)进行比较
编辑:
你为什么认为这是错的?只是和你想象的不同,请看:https://dev.mysql.com/doc/refman/8.0/en/type-conversion.html -mysql非常努力地转换和比较您在查询中给出的内容。
因此,在您的示例中,如果您有一个status='1'的行,那么您的查询将产生该行,正如该链接中引用的那样:
有许多不同的字符串可以转换为值1,例如“1”、“1”或“1a”)。