sql - 无法使用 bitnot 反转 bitand 值,例如在 pl/sql 中从 1 到 0
问题描述
创建一个虚拟列,其值使用其他 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)
)
推荐阅读
- r - 使用 Lubridate 在 R 中由 ts() 创建的每日时间序列的十进制日期到日期时间
- objective-c - 替换 UIStackView 中的视图?
- c# - 图形的深度优先搜索无法正常工作
- amazon-web-services - 如何在 Lambda 函数上挂载 EFS?
- sql - 如何在一行中显示请求?
- python - 如何在python单元测试中使用多个数据库连接
- model-view-controller - System.ComponentModel.Win32Exception: 系统找不到指定的文件,运行项目时出现此错误
- spring - 使用 Spring Boot 从用户输入动态更改连接字符串
- c++ - 用于 nullptr 测试的 Google Mock
- python - 如何在 Keras 中保留最大索引来实现 SegNet