【发布时间】:2016-11-02 18:45:47
【问题描述】:
我正在尝试准备一个 sql 查询。如果值 val3 不为 NULL,我需要准备 Query1,如果值 val3 为 NULL,我需要准备 Query2。这正在 Informix ACE 程序中进行尝试。我不想准备两个不同的选择语句,但需要在 1 个语句中处理。
查询1:
select tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
AND tab1.col3=val3
查询2:
select tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
我试过了 查询3:
select tab1.col1
WHERE tab1.col2=val1
AND tab1.col2=val2
CASE WHEN val3 <> ''
THEN tab1.col2=val3
ELSE ' '
END
但是 case 语句的语法不能处理表达式
【问题讨论】:
-
我刚刚注意到您的查询中可能有错字,您有 where 'tab1.col2=val1 and tab1.col2=val2',这是您想要的吗?实现这一点的唯一方法是如果 'val1 = val2'
-
val3是 ACE 变量还是如何设置的? John Boker 的回答(使用 OR 子句)似乎合乎逻辑,但如果val3是一个 ACE 变量,它可能会使事情复杂化——我不记得您是否可以直接测试这样的 ACE 变量。