2016-11-09 53 views
1

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

回答

3

是,非0值插入为1

MSDN

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

真假字符串值可以被转换为比特值: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