我想从具有null和not null条件的表中返回行。当我用静态值将closdt列等同时,它可以工作,但不适用于case语句中的空值检查条件。 closdt是表sbm中的列
select * from sbm where
closdt
case when :chk='Y' then
is null
else
is not null
end;
答案 0 :(得分:3)
您可以使用一些布尔逻辑写条件:
bash>
bash> source del
-bash: del: line 6: syntax error: unexpected end of file
bash>
bash> cat del
if ( `uname` == Linux ) then
echo "One"
else
echo "Two"
endif
bash>
答案 1 :(得分:1)
没有显示出使用CASE表达式分解条件测试的方法。您可以使用CASE表达式生成要测试的值,如下所示:
select *
from sbm
where case
when :chk = 'Y' AND closdt IS NULL THEN 1
when :chk <> 'Y' AND closdt IS NOT NULL THEN 1
else 0
end = 1