寫 SQL 時常踩的坑:SELECT * FROM table WHERE sex='true' 報「標準數據類型不匹配」。原來 Access 中 Yes/No (Boolean) 類型字段,SQL 裡**不能加引號**,直接寫 WHERE sex = True 或 WHERE sex = -1(True 在 Access 內部為 -1)。
| 資料庫 | True 值 | False 值 | 備註 |
|---|---|---|---|
| Access | True / -1 | False / 0 | 不加引號 |
| SQL Server | 1 | 0 | bit 類型 |
| MySQL | TRUE / 1 | FALSE / 0 | BOOL = TINYINT(1) |
| PostgreSQL | TRUE | FALSE | 標準 boolean |
| Oracle | 1 | 0 | 用 NUMBER(1) 模擬 |
WHERE is_active = 1 跨庫兼容性最好'true'、'false' 字串比較,導致隱式轉換錯誤記住:**Boolean 字段在 SQL 中是數值/關鍵字,不是字串**。這一點在動態拼接 SQL 時尤為重要,參數化查詢可自動處理類型轉換,建議優先使用參數化。