SmallInt中的SQL Bitwise

时间:2013-02-20 15:03:30

标签: sql-server

我有一个关于在sql中存储按位标志的问题。我有许多状态标志,我想存储在SQL smallint字段中。因此,smallint可以表示-32768到32767。

如果我想使用全部32位来存储布尔值,我该如何引用这些位。例如。如果我想存储组成数字1的位,我通常会看到31个零和LSB中的1。将该序列等同于我的smallint字段中的值吗? MSB中的1和其他所有位中的0是多少?也许有更好的方法来存储和查询SQL中的按位数据。

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用bit数据类型?每个国旗需要一个

SQL Server将位列打包成所需的字节数

  • 高达8 = 1个字节
  • 9-16是2个字节
  • ...

数据库引擎也将为您处理所有位掩码等 你看到的只是离散的比特值

那么......为什么要推出自己的?

答案 1 :(得分:-2)

理想的解决方案是使用32个单独的TinyInt字段。 TinyInt支持值0-255。如果您尝试使用单个字段并进行位处理,则无法像使用位类型字段那样索引任何这些标记。