为什么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 被转为了 1127 自然不等于 1

参考:MySQL :: MySQL 8.0 Reference Manual :: 12.3 Type Conversion in Expression Evaluation

以上是 为什么mysql中IS TRUE和=True的结果不一样? 的全部内容, 来源链接: utcz.com/p/945511.html

回到顶部