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