无法使用bitnot反转位和值,例如在pl/sql中从1到0
创建使用其他3列计算其值的虚拟列-无法使用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
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,或者可以更大?