當我運行在MS Access查詢,我可以愉快地使用這樣的查詢:爲什麼MS訪問布爾值爲真-1而不是1或真?
SELECT clients.* FROM clients WHERE active=True;
或
SELECT clients.* FROM clients WHERE active=-1;
但不
SELECT clients.* FROM clients WHERE active=1;
另外,說我想使用PDO查詢數據庫我可能使用準備好的語句:
$db->prepare('SELECT clients.* FROM clients WHERE active=:isactive;');
$db->bindValue(':isactive', True); //Does not work
$db->bindValue(':isactive', 1); //Does not work
$db->bindValue(':isactive', -1); //Does work
因此,即使true
發送一個普通的查詢訪問時,如果綁定只有-1
或0
將工作布爾值。
這是爲什麼,爲什麼-1
代表true
時1
通常意味着在其他語言/數據庫true
?
這似乎很合乎邏輯。很明顯,Access可以應付在正常語句中被賦予'true',但綁定查詢不會產生問題,除非您給它提供適當的值。對於'true','<> 0'好像是一個很好的解決方法@ChristianSpecht提到 – harryg
是的,基督徒對此是正確的。我只是想我會回答你的問題的第二部分。 – jonhopkins
+1另一種看待它的方式是,只有一位長的[二補](http://en.wikipedia.org/wiki/Two%27s_complement)有符號整數只能是兩個值中的一個:0或-1。 –