1

我正在尝试为我的 SQL Server 数据库上的数千人有效地存储和访问一个布尔值(表示“可用性”)。他们会给我他们不可用的日期,我需要代表他们并根据时间表以编程方式处理它们。

换句话说,我需要能够跟踪每个人一年中每一天的可用性(简单的是/否或真/假就足够了)。

我遇到了 Bitvector32 结构并让它工作得很好(参见背景链接:如何在我的 C# 程序中将 SQL Server 'Int' 字段转换为 'BitVector32'?)。我能够创建它,将它作为 int 写入我的数据库,然后将它恢复到我的 C# 程序中。

问题是,我希望能够通过 SQL 访问此结构中包含的布尔值,但我做不到。

我的下一个选项是只为我当时需要的指定日期创建一个布尔值数组(24 次出现),并将其存储在我的 sql 服务器表中以包含每个人的 Y/N。但是,作为新手,我听说 SQL Server 不处理数组。唯一的选择是在 SQL Server 中定义 24 个唯一命名的“位”字段,并从我的 C# 布尔数组中加载它们。这看起来很丑陋。

有没有人看到更好的解决方案或者我很接近?

4

1 回答 1

0

SQL Server 支持按位运算符。Bitvector32使用通常的按位算术“技巧”来访问位。bits & 1例如,给你位 0。bits | 1设置位 0。

于 2014-08-27T22:20:24.300 回答