3

SQLコマンドを使用してOracleで数値の特定のビットを設定するにはどうすればよいですか?BITAND演算子しかありません

BITAND (DEPENDENCY_MAP, 2)

DEPENDENCY_MAPでは、すべてのビットが1つのタイプ依存関係を定義します。このコマンドを使用すると、2番目のビットが設定されているかどうかを確認できますが、このビットを変更するにはどうすればよいですか?

4

1 に答える 1

7

ビットを設定するには:

UPDATE <table name>
   SET DEPENDENCY_MAP = DEPENDENCY_MAP + 2 -- Set the bit (the row must not have the bit set already)
 WHERE BITAND (DEPENDENCY_MAP, 2) = 0 -- This will match rows that don't have the bit set
   AND <add your own row filters>

ビットをクリアするには:

UPDATE <table name>
   SET DEPENDENCY_MAP = DEPENDENCY_MAP - 2 -- Clear the bit (the row must have the bit set already)
 WHERE BITAND (DEPENDENCY_MAP, 2) > 0 -- This will match rows that do have the bit set
   AND <add your own row filters>

注: 上記のコードは正の数に対して機能します。DEPENDENCY_MAPが負の数である場合に何が起こるかをわざわざ理解していません。これは、負の数がないと想定しているためです。

于 2013-01-23T10:23:25.027 に答える