PLSQL 位掩码值

PLSQL bitmask values

我是这种情况,无法验证打印权限位。不幸的是,我不能有一个点亮的位掩码。你能给我一些建议吗?

SELECT 
  DECODE(BITAND(00000000100000100000000000000001, 1), 1, '1', '0') AS READ,
  DECODE(BITAND(00000000100000100000000000000001, 131072), 131072, '1', '0') AS COPY,
  DECODE(BITAND(00000000100000100000000000000001, 8388608), 8388608, '1', '0') AS PRINT
  FROM 
DUAL

结果如下

R C P
- - -
1 1 0

你能给我一些建议吗?

BIT_AND函数的两个参数都是数字,没有位向量。

例如:

select bin_to_num(0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1) from dual;

OUTPUT>
8519681

with 
datum as
(select bin_to_num(0,0,0,0,0,0,0,0,1/*print*/,0,0,0,0,0,1/*copy*/,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1/*read*/) val from dual)
select 
  decode(bitand(val, 1), 1, '1', '0') as read,
  decode(bitand(val, 131072), 131072, '1', '0') as copy,
  decode(bitand(val, 8388608), 8388608, '1', '0') as print
from  datum