mysql 中 IS TRUE 和 =True 结果差异的原因
当比较 MySQL 中的布尔值时,可以发现 IS TRUE 和 =True 返回的结果不同。为什么会出现这种情况呢?
对于 IS TRUE 比较,它将非零值解释为真,而对于 =True 比较,它检查值是否严格等于 1。在 MySQL 中,TRUE 被转换为TINYINT(1)类型,其中 1 表示真,0 表示假。
所以,当使用 =True 时,它正在检查 TINYINT(1) 值是否等于 1。然而,当使用 IS TRUE 时,它正在检查该值是否非零。
在此示例中,TINYINT(1) 列 is_deleted 中的值为 127,而非 1。因此,=True 比较失败,而 IS TRUE 比较成功。
差异的意义
理解这一差异非常重要,因为它可以影响 SQL 查询的结果。当需要检查值是否为真时(类似于 Java 中的 Boolean 值),请使用 IS TRUE。当需要检查值是否等于特定的布尔值时(例如 TRUE 或 FALSE),则使用 =True 或 =FALSE。