【发布时间】:2013-10-19 05:10:33
【问题描述】:
我知道将数字与 VARCHAR 字段进行比较是愚蠢的想法,我不应该比较它,但我只是想了解原因。
我有以下架构的表。
Table: user
--------------------
number varchar(24)
我使用 MyISAM 作为存储引擎。
数字字段包含混合数据,即数字(如“9999999”)和字符串(如“注册”)。
我正在尝试运行以下查询。
SELECT * FROM user where number=0
但它返回数字字段包含字符串值(如“signup”)或数字字段为空的所有行。
如果我运行以下查询..
SELECT * FROM user where number=1 or SELECT * FROM user where number=97654
它们没有返回任何行,因为没有一行在其数字字段中具有 1 或 97654 值。
谁能帮我理解 mysql 如何比较 0 和 varchar 字段?
【问题讨论】:
-
在比较 varchar 时需要添加引号,除非得到不想要的结果