使用输入参数过滤列

Filtering column using input parameter

我需要根据外部参数的值过滤列,但我不知道如何处理 NULL 情况,因为它需要不同的语法。 我有的是这样的:

WHERE c.fruit LIKE
(CASE :fruitParam
    WHEN 'Orange' THEN 'OR'
    WHEN 'Apple' THEN 'APL'
    WHEN 'Any' THEN '%'
    WHEN 'None' THEN NULL  -- doesn't work since we can't do: LIKE NULL
END)

在此实例中,c.fruit is null 处需要返回行。有没有另一种写法,当参数 'fruitParam' 为 'None' 时,我们可以设置条件:c.fruit IS NULL?

这是在使用 Oracle。

你可以把它移到另一个子句中:

WHERE (c.fruit LIKE
CASE :fruitParam
    WHEN 'Orange' THEN 'OR'
    WHEN 'Apple' THEN 'APL'
    WHEN 'Any' THEN '%'
END)
or (:fruitParam = 'None' and c.fruit is null)