Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据oracle条件将列设置为不为null_Sql_Oracle_Oracle11g - Fatal编程技术网

Sql 根据oracle条件将列设置为不为null

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

我有一个包含列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 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
时,这也可以工作