对于一个选择语句,我在配置文件中将一部分 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
真,如果提供了填充列表,则对于列表中与列表匹配的每个元素都为真。
但是,如果我提供一个填充列表,它将不适用于 where 语句前半部分的比较:
('entry_a', 'entry_b') = ('')
是否有任何查询可以使其工作 - 最好在一行 where 语句中?