1

を使用して、どのビットが設定されているかを調べようとしますBITAND

データベースでは、ユーザー権限を BIGINT1101111やのように保存します1110001

サンプルの場合、3 番目のビットが設定されている場合、テーブル内の要素を見つける必要があります。この場合。クエリは最初のものを見つける必要があります。

どうやってやるの??

Select * from USERRIGHTS
WHERE BITAND(Rightmask , 4) = 1 ??????
4

2 に答える 2

1

解決策を見つけました。右のマスクを「1101111」という形式で保存するのはばかげていました。データを 10 進形式で保存する必要があります。この場合、1101111 = 111 (10 進数) または 1110001 = 113 です。アプリケーションで正しいマスクを 10 進数に変換し、その形式で保存しました。

そして、ビット位置が設定されているかどうかを確認することができました。

このクエリは、私が望むすべてのエントリを提供します:-):

Select * from USERRIGHTS WHERE BITAND(Rightmask , 16) = 16 (3 番目のビット位置は、右から5 番目のビット位置です。この値は、ビット演算に使用する必要があります。2^(5-1) = 16)

于 2012-11-16T08:17:18.113 に答える
0

Linux、UNIX、および Windows DB2 プラットフォームでは、バージョン 9.5でビット演算子が導入されました。

于 2012-11-15T20:58:52.833 に答える