有条件地准备SQL

时间:2016-11-02 18:45:47

标签: sql informix

我正在尝试准备一个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语句句法不会处理表达式

2 个答案:

答案 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)
相关问题