准备语句的 WHERE 子句中参数的全部捕获值?

Catch-all value for a parameter in the WHERE clause of a Prepared Statement?

我有以下准备好的语句,我通过 JDBC 驱动程序发送到 Oracle 数据库:

SELECT * FROM mytable WHERE ? = ANY(col1, col2)

现在,通常当我将其作为查询执行时,我会提供一个存在于 col1col2 中的值,并且 Oracle 尽职地 returns 所有包含该值的行。

但是我想使用相同的准备语句通过提供类似通配符参数。我试过像“*”和“”这样的字符串,但它总是 returns no 行。

此准备好的语句中是否存在用于获取 所有 行的参数值?

您通常会为此目的使用 NULL。像这样:

WHERE ? IN (col1, col2) OR ? IS NULL

你可以试试:

where nvl(?, col1) in (col1, col2)

如果您想要所有值,请传入 null