3

如何使用 SQL 命令在 Oracle 中设置数字的特定位?只有BITAND运营商

BITAND (DEPENDENCY_MAP, 2)

在 DEPENDENCY_MAP 中,每一位都定义了一种类型依赖性。使用此命令,我可以找到第二位是否已设置。但是如何修改此位?

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 回答