【发布时间】:2013-06-26 10:00:30
【问题描述】:
当我在 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 将适用于布尔值。
为什么这是-1代表true,而1在其他语言/数据库中通常表示true?
【问题讨论】: