无法使用bitnot反转位和值,例如在pl/sql中从1到0

无法使用bitnot反转位和值,例如在pl/sql中从1到0,sql,oracle,bitwise-operators,ddl,Sql,Oracle,Bitwise Operators,Ddl,创建使用其他3列计算其值的虚拟列- CREATE TABLE emp ( id NUMBER, comm1 number, comm2 number, comm3 number, comm4 number GENERATED ALWAYS AS ((comm1 - bitand(comm1, comm2) + comm2) - bitand((comm1 - bitand(c

创建使用其他3列计算其值的虚拟列-

CREATE TABLE emp (
  id          NUMBER,
  comm1       number,
  comm2       number,
  comm3       number,
  comm4        number GENERATED ALWAYS AS
                
((comm1 - bitand(comm1, comm2) + comm2) - bitand((comm1 - bitand(comm1, comm2) + comm2),comm3)+comm3)  VIRTUAL,
              
  CONSTRAINT employees_pk PRIMARY KEY (id)
); 
如果我插入-

INSERT INTO emp (id,comm1, comm2,comm3)
VALUES (3, 1,1,1);
列comm4获取值1,我想要0
如何将其反转。

如果使用模运算符,我们可以将0反转为1,将1反转为0,但我认为必须使用逻辑表达式,我不理解,因为我不知道上下文

有一个解决方案供您选择:

CREATE TABLE emp (
  id          NUMBER,
  comm1       number,
  comm2       number,
  comm3       number,
  comm4        number GENERATED ALWAYS AS  ( mod ( 1 , ((comm1 - bitand(comm1, comm2) + comm2) - bitand((comm1 - bitand(comm1, comm2) + comm2),comm3)+comm3) ) ) VIRTUAL,
  CONSTRAINT employees_pk PRIMARY KEY (id)
)

comm1
comm2
comm3
列中的值是否仅为0或1,或者可以更大?