mysql 中 IS TRUE 和 =True 結(jié)果差異的原因
當比較 MySQL 中的布爾值時,可以發(fā)現(xiàn) IS TRUE 和 =True 返回的結(jié)果不同。為什么會出現(xiàn)這種情況呢?
對于 IS TRUE 比較,它將非零值解釋為真,而對于 =True 比較,它檢查值是否嚴格等于 1。在 MySQL 中,TRUE 被轉(zhuǎn)換為TINYINT(1)類型,其中 1 表示真,0 表示假。
所以,當使用 =True 時,它正在檢查 TINYINT(1) 值是否等于 1。然而,當使用 IS TRUE 時,它正在檢查該值是否非零。
在此示例中,TINYINT(1) 列 is_deleted 中的值為 127,而非 1。因此,=True 比較失敗,而 IS TRUE 比較成功。
差異的意義
理解這一差異非常重要,因為它可以影響 SQL 查詢的結(jié)果。當需要檢查值是否為真時(類似于 Java 中的 Boolean 值),請使用 IS TRUE。當需要檢查值是否等于特定的布爾值時(例如 TRUE 或 FALSE),則使用 =True 或 =FALSE。