Когда я запускаю запрос в MS Access, я могу с радостью использовать такой запрос:
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
работает при отправке простого запроса в Access, если привязка только -1
или 0
будет работать для boolean.
Почему это и почему -1
является представителем true
, когда 1
обычно означает true
в других языках/базах данных?