SQL 服务器 - 位数据类型匹配字符串 'True' 和 'False'

SQL Server - Bit data type matches String 'True' and 'False'

我不确定我正在使用的数据库是否做了一些特殊的事情,但是在优化旧代码时,我遇到了以下(经过清理的)查询:

SELECT Code
FROM GovernmentThing
WHERE IsGovernment = 'True'

我检查了 IsGovernment 的数据类型,假设它是 varchar(5) 或类似的东西,结果发现它是一个 bit 字段。

然后我假设代码是错误的,并通过 运行 查询 returning IsGovernment 字段进行检查。令我大吃一惊的是,我发现该查询仅 returning 了 IsGovernment 设置为 1 的行!因为那时我想知道对字符串文字 'False' 的检查会 return,我测试了,只是发现只有零值被 returned!!

我可能在 TSQL 更新中遗漏了一些东西,或者有一些棘手的配置使它起作用,但是......我以前从未听说过这个。

有人能赐教吗 - 这是否记录在某处,或者???

SQL 服务器 2012

这是描述此行为的 bit data type documentation 的摘录:

The string values TRUE and FALSE can be converted to bit values: TRUE is converted to 1 and FALSE is converted to 0.