2014-08-27 30 views
1

我試圖有效地存儲和訪問我的SQL Server數據庫上的數千人的布爾值(以表示「可用性」)。當他們不可用時,他們會給我日期,我需要代表他們並按照計劃以編程方式處理它們。C#Sql服務器陣列訪問混淆

換句話說,我需要能夠跟蹤每個人每年的可用性的每一天(簡單的是/否或真/假就足夠了)。

我遇到了Bitvector32結構,並讓它工作非常好(請參閱鏈接瞭解背景:How do I convert a SQL Server 'Int' field to 'BitVector32' within my C# program?)。我可以創建它,將它作爲int寫入我的數據庫,然後將其恢復到我的C#程序中。

問題是,我想能夠通過SQL訪問此結構中包含的布爾值,但我不能這樣做。

我的下一個選擇是創建一個布爾值的數組(僅出現24次),僅用於當時需要的指定日期,並將其存儲在我的sql服務器表中以包含每個人的Y/N。但是,對於這個新手而言,我聽說SQL Server不處理數組。唯一的選擇是在SQL Server中定義24個唯一命名的「位」字段,並從我的C#布爾數組中加載它們。這看起來很難看。

有沒有人看到更好的解決方案或我關閉?

回答

0

SQL Server支持按位運算符。 Bitvector32使用通常的按位算術「技巧」來訪問位。例如,bits & 1給出了位0。 bits | 1設置位0.

+1

這很好用 - 我對位運算符一無所知,花了一點時間找到完美的解決方案。感謝usr! – 2014-08-28 17:20:58