我正在尝试准备一个SQL查询。如果值val3不为NULL,我需要准备Query1,如果值val3为NULL,我需要准备Query2。这是在Informix ACE程序中尝试的。我不想准备两个不同的select语句,但需要处理1个stattement。
查询1:
select tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
AND tab1.col3=val3
QUERY2:
select tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
我试过了 QUERY3:
select tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
CASE WHEN val3 <> ''
THEN tab1.col2=val3
ELSE ' '
END
但是case语句句法不会处理表达式
答案 0 :(得分:0)
所以从本质上说你想要 tab1.col3 to = to val3,否则你希望tab1.col3等于它自己;所以它不会影响结果。但是如果tab1.col3为null; null equalities不起作用,所以我们必须将tab1.col3设置为某个值才能使等式有效。
SELECT tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
AND coalesce(tab1.col3,-1) = case val3 when null then coalesce(tab1.col3,-1) else val3 end
答案 1 :(得分:0)
可能像
select tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
AND (tab1.col3=val3 or val3 is null)