【发布时间】:2020-02-26 17:22:26
【问题描述】:
假设有一个名为tab01 的表,并且它在varchar 类型中有一个名为col01 的列。和语句如下所示。
# the first statement
SELECT * FROM tab01 WHERE col01 IN (TRUE);
# the second statement
SELECT * FROM tab01 WHERE col01 IN (FALSE);
# the third statement
SELECT * FROM tab01 WHERE col01 IN ('val01');
来自MySQL 5.7 Reference Manual,这三个语句的形式为bit_expr [NOT] IN (expr [, expr] ...)。在我的直觉中,只要将expr 评估为True,就应该返回该行。
为什么第一条语句什么也不返回?在我看来,第一条语句SELECT * FROM tab01 WHERE col01 IN (TRUE); 应该返回所有记录,而第二条语句SELECT * FROM tab01 WHERE col01 IN (FALSE); 应该什么也不返回。我在这个MySQL 5.7 Reference Manual 中找不到任何线索。
【问题讨论】:
-
COL01 的数据类型是什么,该列中存在哪些可能的值?
-
请分享表结构和一些示例数据,以便其他人可以重现您的问题
-
如果你不明白重写它是可以理解的..
-
@SalmanA
col01的数据类型是字符串。