Mam stół z kolumną A i kolumną B. Chciałbym wykonać kolumnę, jeśli wartość kolumna B jest "123" i nie sprawiają, że nie jest null, jeśli kolumna B jest niczym innym.

0
Mohamed 25 luty 2019, 18:11

2 odpowiedzi

Najlepsza odpowiedź

Nie ma czegoś takiego jak uwalnialność. Ale możesz mieć kontrolę wartości NULL:

create table t (
    . . . ,
    a int,
    b varchar2(255),
    constraint chk_t_a check ( (b <> '123' and a is not null) or (b <> '123'))
);

Jeśli b może przyjmować wartości NULL, musisz również to wziąć pod uwagę.

Uwaga: Jeśli chcesz a, aby zawsze być NULL {EM> tylko wtedy, gdy {x2}} Następnie użyj:

create table t (
    . . . ,
    a int,
    b varchar2(255),
    constraint chk_t_a check ( not (b = '123' and a is not null) )
);

check Ograniczenia przejść, nawet gdy wynikowa wartość jest NULL - W przeciwieństwie do WHERE i CASE WHEN Logika. Działa więc, nawet gdy b jest NULL.

2
Gordon Linoff 25 luty 2019, 15:14

Możesz użyć wyrażenia case:

select (case when colb <> 123 then cola end) as cola, t.colb
from table t;
0
Yogesh Sharma 25 luty 2019, 15:14