我有一个包含几列的数据库表。其中一列旨在用作 TINYINT(1) DEFAULT 0 的布尔设置。
我无意中发现,如果你运行这个查询
SELECT * FROM table_name WHERE column_name;
它返回 column_name = 1 的行。
我很想知道 MySql 用来处理这个查询的逻辑。
正如文档在“选择语法”中所说,(http://dev.mysql.com/doc/refman/5.1/en/select.html)
where_condition 是一个表达式,对于要选择的每一行计算结果为 true
因此,简单列名被评估为布尔值,并选择相应的行。你会发现它也适用于整数。