我运行查询以查找记录WHERE Column1 = -1
(在bit
列中查找True值)。当我在SSMS中查看表时,我看到大量的记录显示为-1值。当我在MS Access中将表作为链接表查询时,我必须将WHERE子句更改为Column1 = 1
,因为Column1 = -1
不会返回SSMS中的-1表示的行。
非常奇怪!
在MS Access中,我总是使用-1来获取布尔列中的True值。谁能解释一下?我没有在任何地方看到这个记录。
答案 0 :(得分:3)
因为任何非零值变为1.这里在文档中提到了这一点。 https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql
答案 1 :(得分:1)
MS Access位和ODBC sql_bit数据类型之间存在一些转换。在T-SQL中,将任何非零值转换为位会将其转换为1.因此-1变为1,或者27变为1,或者其他。所以我怀疑通过ODBC数据类型的转换导致了这种情况。