在SQL Server的单个二进制字段中插入多个值
本文关键字:插入 字段 二进制 SQL Server 单个 | 更新日期: 2023-09-27 18:13:04
我遇到了一个问题,我需要在我的数据库中为每小时的学生出勤插入位值(真/假)。每个小时应该有一个值(true/false)。
直接的选项是创建24列,并在每次有学生出现时为每列输入值。但毫无疑问,这也是最糟糕的。
有人建议我使用二进制字段,一个字段可以包含所有这些值。
实际上mu gui有24个复选框,无论哪个复选框被选中,它的值应该存储为1,所以当我下次打开屏幕时,这些复选框应该保持选中状态。
我使用sql server 2008和。net framework 4.0,如果它有帮助。
谢谢
没有必要与[var]binary(n)
混淆。因为你只需要24位,存储一个常规的,不可空的int
。然后只需对代码进行位数学运算,即移位(<<
/>>
)操作符和位组合(&
, |
和一些~
)。不需要其他任何东西。因此,如果我们决定LSB是00:00,从右到左工作,那么在03:00和14:00-16:00(包括)在场的人的值将为
(1 << 3) | (1 << 14) | (1 << 15) | (1 << 16) ==> 114696
如果您不熟悉位计算,那么:
- get舒适的位数
- 不要尝试将其存储为二进制
您还声明:
但这无疑也是最糟糕的。
以什么方式?它描述了您的场景,SQL-server将自动为您压缩多个bit
字段。这可能是个不错的选择。
您可以使用BitArray类来操作int(和其他类型)的单个位。这可能使您更容易与二进制选项,但我不认为这一定是一个坏的选择,存储在数据库中的所有值。你为什么觉得这是个糟糕的选择?