如何解决准备好的语句的 WHERE 子句中参数的全部值?
我有以下准备好的语句,我通过 JDBC 驱动程序将其发送到 Oracle 数据库:
SELECT * FROM mytable WHERE ? = ANY(col1,col2)
现在,通常当我将它作为查询执行时,我会提供一个存在于 col1
或 col2
中的值,Oracle 会尽职尽责地返回包含该值的所有行。
但是,我想使用相同的准备好的语句通过提供通配符参数之类的东西来获取表中的所有行。我试过像 "*" 和 "" 这样的字符串,但它总是返回没有行。
这个准备好的语句中的参数值是否存在,我可以用它获取所有行?
解决方法
你可以试试:
where nvl(?,col1) in (col1,col2)
如果需要所有值,则传入 null
。
出于此目的,您通常会使用 NULL
。像这样:
WHERE ? IN (col1,col2) OR ? IS NULL
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。