Когда я запускаю запрос в 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 в других языках/базах данных?
