SQL位字段存储非零字符

时间:2016-11-09 21:05:28

标签: sql sql-server-2014 infopath

我理解位字段只能存储0或1.我有一个我继承的InfoPath表单,当我从表单解析XML并将数据存储在数据库中时,其中一个XML节点有1或者2,它被存储在一个位字段中。无论字段中是否有1或2,位字段只存储1.我的问题是,位字段将0存储为0,但它是否也将非零字符存储为1?那么,2是否也被存储为1?

1 个答案:

答案 0 :(得分:3)

是的,非0值将作为1插入。

来自MSDN

  

SQL Server数据库引擎优化了位列的存储。如果表中有8位或更少位列,则列存储为1个字节。如果有9到16位列,则列存储为2个字节,依此类推。

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

  转换为位会将任何非零值提升为1.

测试SQL:

Create Table Test (A bit);

Insert Test Values (-1), (0), (1), (2)

Select * From Test

结果:

A
----
1
0
1
1