0

SQLにビット単位のフラグを格納することについて質問があります。SQLのsmallintフィールドに格納したいステータスフラグがいくつかあります。したがって、smallintは-32768から32767を表すことができます。

32ビットすべてを使用してブール値を格納する場合、ビットを参照するにはどうすればよいですか。例えば。数値1を構成するビットを格納したい場合、通常、LSBに31個のゼロと1個のゼロが表示されます。そのシーケンスは、私のsmallintフィールドの値と同じでしょうか?MSBで1、他のすべてのビットで0はどうですか?たぶん、SQLでビット単位のデータを格納およびクエリするためのより良い方法があります。

前もって感謝します。

4

2 に答える 2

2

ビットデータ型を使用しますか? 必要なフラグごとに 1 つ

SQL Server はビット列を必要な数のバイトにパックします

  • 最大 8 = 1 バイト
  • 9-16 は 2 バイト
  • ...

DB エンジンは、すべてのビット マスクなども処理します
。表示されるのは、個別のビット値だけです。

では、なぜ自分で巻くのですか?

于 2013-02-20T15:25:00.843 に答える
-2

理想的な解決策は、32 個の個別の TinyInt フィールドを使用することです。TinyInt は 0 ~ 255 の値をサポートします。単一のフィールドを使用してビット処理を行おうとすると、ビット タイプのフィールドを使用した場合と同様に、これらのフラグのいずれにもインデックスを付けることができなくなります。

于 2013-02-20T15:28:59.630 に答える