oracle bitand函数

osm*_*nes 2 sql oracle

我对oracle bitand函数感到困惑.我知道它用于控制是否设置了两个位.但是,被设定的意义是什么.何时以及为何使用它.如果你可以根据一个真实的例子给出一个例子,那对我来说就是如此.谢谢你的回答.

Bob*_*ica 6

在二进制中,"set"表示"具有值1"."未设置"表示"值为0".

来自BITAND的Oracle文档:

"结果是按几个步骤计算的.首先,每个参数A被替换为值SIGN(A)*FLOOR(ABS(A)).这种转换具有将每个参数截断为零的效果.接下来,每个参数A(现在必须是整数值)转换为n位二进制补码二进制整数值.使用按位AND运算组合两个位值.最后,得到的n位二进制补码值转换回NUMBER.

简而言之,此函数会截断其参数,将它们转换为二进制数(当前限制为128位),并将两个二进制数一起转换为AND,并返回将二进制数转换回NUMBER的结果.

这是零和一的所有可能组合的结果:

SELECT BITAND(0, 0) AS "0, 0",  -- i.e. 0 AND 0 = 0
       BITAND(0, 1) AS "0, 1",  -- i.e. 0 AND 1 = 0
       BITAND(1, 0) AS "1, 0",  -- i.e. 1 AND 0 = 0
       BITAND(1, 1) AS "1, 1"   -- i.e. 1 AND 1 = 1
  FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

一个更复杂的例子是AND和11和5.在二进制中,11十进制变为"1011".5位小数变为"0101"二进制.如果你将这些值和它们放在一起,就像在

1 0 1 1
0 1 0 1
-------
0 0 0 1
Run Code Online (Sandbox Code Playgroud)

你得到1个二进制,当转换回十进制时仍然是1.

分享和享受.