我有一个关于在sql中存储按位标志的问题。我有许多状态标志,我想存储在SQL smallint字段中。因此,smallint可以表示-32768到32767。
如果我想使用全部32位来存储布尔值,我该如何引用这些位。例如。如果我想存储组成数字1的位,我通常会看到31个零和LSB中的1。将该序列等同于我的smallint字段中的值吗? MSB中的1和其他所有位中的0是多少?也许有更好的方法来存储和查询SQL中的按位数据。
提前致谢。
答案 0 :(得分:2)
使用bit数据类型?每个国旗需要一个
SQL Server将位列打包成所需的字节数
数据库引擎也将为您处理所有位掩码等 你看到的只是离散的比特值
那么......为什么要推出自己的?
答案 1 :(得分:-2)
理想的解决方案是使用32个单独的TinyInt字段。 TinyInt支持值0-255。如果您尝试使用单个字段并进行位处理,则无法像使用位类型字段那样索引任何这些标记。