2014-11-21 108 views
0

我试图根据一列中表示为varchar的二进制代码来选择值,例如“values.todo “= 101,所以我会做下面的SQL查询:MySQL子字符串在WHERE子句中使用时返回false,结果为'0'

SELECT * FROM values WHERE SUBSTRING(todo,2,1); 

我明白串比较的东西明确会更精确,实际上是查询是如何完成的,但我的问题是,为什么给定的查询认为位置2,1处的返回值'0'为假,因此返回0结果?

+0

您可以使用位运算符来代替,例如,如果待办事项=“101”'TODO: 2'将返回0,而'todo&4'将返回4,'todo&1'将返回1。 – piotrm 2014-11-21 12:38:06

回答

0

根据documentation of MySQL,这应该工作:

比较操作导致1(TRUE)的值,0(FALSE),或NULL。这些操作适用于数字和字符串。必要时,字符串会自动转换为数字和数字。

如果你向下滚动进一步你会看到其中0被视为虚假select语句的例子,...

相关问题