SQLでは、特定のビットが整数型(MySQL)でオンになっているかどうか検出したいと思いますか?SQL - 整数型 - 検出ビット
どうすればいいですか?
基本的に、ビットがオンかどうかを検出し、オンの場合は無視します。
私は今、このようなものを使用しています:
WHERE (column & 2) != 2
SQLでは、特定のビットが整数型(MySQL)でオンになっているかどうか検出したいと思いますか?SQL - 整数型 - 検出ビット
どうすればいいですか?
基本的に、ビットがオンかどうかを検出し、オンの場合は無視します。
私は今、このようなものを使用しています:
WHERE (column & 2) != 2
はあなたがチェックしていると言います3ビットTHEN ...
SELECT bits & 8 = 8 FROM table;
これはバイナリ(1または0)(この場合、第三に)当該ビット列「ビット」の行ごとにオンまたはオフであるかどうかのために返します。
xの代わりに2番目のxを8の代わりに使用します。
例えばは、我々はしかし、2^5 = 32
SELECT bits & 32 = 32 FROM table;
を使用する5ビット目をチェックするために、これは不必要に複雑です。ブール値を複数の列で使用するだけで、作業がはるかに簡単になります。MySQLの
SQLは、標準のビット演算子をサポートしています。
DECLARE @BitMask INT
SET @BitMask = 34
SELECT
@BitMask & 32, -- Returns 32, ON
@BitMask & 16 -- Returns 0, OFF
あなたが使用しているデータベースプラットフォームのための質問にタグを付ける必要があります。
これは、SQL Server 2008のであれば、あなたはそのビットあなたがテストに興味があるパターンに設定されている整数に比較すること(特にビット単位または等しい)ビット演算子を使用することができます。梱包でいることhttp://msdn.microsoft.com/en-us/library/cc627409.aspx
注意これらの整数を使用すると、それらの列のインデックスの使用を妨げる可能性が高くなります。
私は、これはあなたが望むものを達成するのに役立ちます信じて:
使用&
、bitwise AND operator:1 =真TSQLでは、
SELECT ID, myfield
FROM mytable
WHERE (myfield & 16) > 0
、0 =偽。
MS Accessでは、-1 = true、0 = falseです。
...
誰かが他の方言を記入できるかもしれません。
あなたはアプリケーション層でビットを解釈している場合は、変換関数を使用することができるはずです(例えば、VBであなたが真か偽解釈するIF convert.toboolean(myValue) THEN...
を言うかもしれない。
、あなたは、この使用し、ビット2は、(0から数えて)column1のために設定されている場合はブールtrue
を取得するには、例えば
をマスクビットで、ビット単位のAND
演算子&
を使用することができます。
where (column1 & 4) = 4
これは、両方のビット0と2が設定されていることを確認するために、たとえば、複数のビットチェックのために動作します:
where (column1 & 5) = 5
あなたはについて話していますビット列または整数列?あなたは何を意味しますか?質問を言い換えてください。 – Caimen
あなたはどのデータベースを使用していますか? – Bohemian
ビットマップフラグは3GLの列挙型では問題ありませんが、SQLなどの4GLはリレーショナルデータ、つまりタプルと属性との関係に最も適しています。 – onedaywhen