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

xqk2d5yq  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(382)

创建使用其他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,我怎样才能反转它。

eh57zj3b

eh57zj3b1#

如果我们使用模运算符,我们可以将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)
)

相关问题