对于select语句,我在配置文件中将where条件的一部分设置为参数,就像这样(COL2
填充了字符串值):
SELECT COL1
,COL2
FROM TABLE1
WHERE COL2 = $external_parameter
现在我有一个更复杂的情况,我需要外部参数作为列表。每当COL2
的值在列表中时,它应该选择,但是如果没有提供列表或某种"空的"标签,应再次选择每个值。我提出了一个想法,但它没有这样做:
SELECT COL1
,COL2
FROM TABLE1
WHERE $external_list = ('') or COL2 IN $external_list
与此类似,当提供空列表时,COL2
的所有元素都将为true,如果提供了填充列表,则列表中与列表匹配的每个元素都为true。
但是,如果我提供一个填充列表,它将无法在where语句的前半部分进行比较:
('entry_a', 'entry_b') = ('')
是否有任何查询可以使其工作 - 最好是在一行中哪个语句?
答案 0 :(得分:0)
尝试这样的事情,
SELECT COL1
,COL2
FROM TABLE1
WHERE COL2 IN ($EXTERNAL_PARAMETER)
OR 1 = (
CASE
WHEN $EXTERNAL_PARAMETER = ''
THEN 1
ELSE 0
END
)
答案 1 :(得分:0)
试试这种方式
Execute Python script
答案 2 :(得分:0)
试试这个
IF $EXTERNAL_PARAMETER = ''
SET $EXTERNAL_PARAMETER = NULL
SELECT COL1
,COL2
FROM TABLE1
WHERE COL2 = ISNULL($EXTERNAL_PARAMETER, COL2 )