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

时间:2018-06-28 23:02:55

标签: sql-server tsql sql-server-2012 boolean bit

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

SELECT Code
FROM GovernmentThing
WHERE IsGovernment = 'True'

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

然后,我认为代码是错误的,并通过运行返回IsGovernment字段的查询来进行检查。令我惊讶的是,我发现查询仅返回IsGovernment设置为1的行!自从我想知道对字符串文字'False'的检查将返回什么后,我进行了测试,发现仅返回了零值!

我可能错过了TSQL更新中的某些内容,或者有一些棘手的配置使这项工作可行,但是...我以前从未听说过。

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

SQL Server 2012

1 个答案:

答案 0 :(得分:2)

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

  

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