Sql 根据oracle条件将列设置为不为null
我有一个包含列a和列B的表。如果列B的值为“123”,我想将列a设为空,如果列B是其他值,则将其设为非空。您可以使用Sql 根据oracle条件将列设置为不为null,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有一个包含列a和列B的表。如果列B的值为“123”,我想将列a设为空,如果列B是其他值,则将其设为非空。您可以使用case表达式: select (case when colb <> 123 then cola end) as cola, t.colb from table t; 选择(colb 123后cola结束的情况)作为cola,t.colb 来自表t; 您可以使用案例表达式: select (case when colb <> 123 then cola e
case
表达式:
select (case when colb <> 123 then cola end) as cola, t.colb
from table t;
选择(colb 123后cola结束的情况)作为cola,t.colb
来自表t;
您可以使用案例
表达式:
select (case when colb <> 123 then cola end) as cola, t.colb
from table t;
选择(colb 123后cola结束的情况)作为cola,t.colb
来自表t;
没有条件可空性。但是,您可以进行NULL
值检查:
create table t (
. . . ,
a int,
b varchar2(255),
constraint chk_t_a check ( (b <> '123' and a is not null) or (b <> '123'))
);
check
即使结果值为NULL
,约束也会通过——这与WHERE
和CASE when
逻辑不同。因此,即使b
为NULL
没有条件可空性这样的事情,这也可以工作。但是,您可以进行NULL
值检查:
create table t (
. . . ,
a int,
b varchar2(255),
constraint chk_t_a check ( (b <> '123' and a is not null) or (b <> '123'))
);
check
即使结果值为NULL
,约束也会通过——这与WHERE
和CASE when
逻辑不同。因此,即使b
为NULL
时,这也可以工作