我对oracle bitand函数感到困惑。我知道用于控制是否设置了两位。但是,被设置的含义是什么。什么时候以及为什么使用它。如果您可以举一个基于真实示例的示例,这对我来说将非常高兴。感谢您的回答。
最佳答案
在二进制中,“set”表示“具有值1”。 “未设置”表示“值为0”。
从Oracle文档BITAND:
“结果是分几步来计算的。首先,将每个参数A替换为
值SIGN(A)* FLOOR(ABS(A))。这种转换的作用是将每个
零参数。接下来,每个参数A(现在必须是整数值)
转换为n位二进制补码二进制整数值。两个位的值是
使用按位与运算进行组合。最后,得到的n位二进制补码
值将转换回NUMBER。”
简而言之,该函数将其参数截断,将其转换为二进制数(当前限制为128位),并将两个二进制数相加在一起,并返回将二进制数转换回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;
一个更复杂的示例是将11和5与在一起。在二进制中,十进制11变为“1011”。小数点后5位变为二进制“0101”。如果您将这些值加在一起,例如
1 0 1 1
0 1 0 1
-------
0 0 0 1
您将获得1个二进制,转换回十进制时仍为1。
分享并享受。