SQL Server - 位数据类型与字符串 'True' 和 'False' 匹配



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

SELECT Code
FROM GovernmentThing
WHERE IsGovernment = 'True'

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

然后,我假设代码是错误的,并通过运行返回IsGovernment字段的查询进行检查。令我非常惊讶的是,我发现查询只返回IsGovernment设置为 1 的行!由于我当时想知道对字符串文字'False'的检查会返回什么,所以我测试了一下,只是发现只返回了零值!!

可能是我在 TSQL 更新中的某个地方错过了一些东西,或者有一些棘手的配置可以完成这项工作,但是......我以前从未听说过这个。

有人可以启发我 - 这是记录在某处,还是???

SQL Server 2012

下面是描述此行为的位数据类型文档的摘录:

字符串值 TRUE 和 FALSE 可以转换为位值:TRUE 转换为 1,FALSE 转换为 0。

最新更新