为什么mysql中IS TRUE和=True的结果不一样?
为什么mysql中IS TRUE和=True的结果不一样?
我有一张user表,结构如下:
表中数据如下:
我尝试查询sql:
SELECT * FROM `user` WHERE is_deleted IS TRUE
结果为:
查询sql:
SELECT * FROM `user` WHERE is_deleted = TRUE
结果为:
我用true或者false作为查询条件是因为:在java中tinyint能被转成Boolean,所以在查询的时候能直接传true或者false
有没有大佬知道为什么结果不一样呢?
回答:
=
做的是数值比较,TRUE 是 1 ,并不等于 127 。IS TRUE
做的是真假判断,非零都为真。
回答:
is true
的时候,是在评估 is 后面的 true 能否被认为 true
,这里的 127 就可以被评估 true
而使用等于的时候。MySQL 会把你传入的值转换成 number,进行比较,也就是这里的 true
被转为了 1
,127
自然不等于 1
。
参考:MySQL :: MySQL 8.0 Reference Manual :: 12.3 Type Conversion in Expression Evaluation
以上是 为什么mysql中IS TRUE和=True的结果不一样? 的全部内容, 来源链接: utcz.com/p/945511.html