微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 SQL 查询的 WHERE 条件中多次使用相同的参数以在 JDBC 中使用 我尝试过的其他事情:

如何解决在 SQL 查询的 WHERE 条件中多次使用相同的参数以在 JDBC 中使用 我尝试过的其他事情:

我想通过 JDBC 和准备好的语句 sql 查询发送到我的 Oracle 数据库,如下所示:

SELECT * FROM mytable WHERE col1 = <ONEVAL> col2 = <ONEVAL> AND col3 = <ONEVAL>;

我从 SO answer How to use the same value multiple times in jdbc postgresql prepared statement 知道 JDBC 不支持命名参数,所以直接准备语句

SELECT * FROM mytable WHERE col1 = ? AND col2 = ? AND col3 = ?;

仅在我提供 <ONEVAL> 3 次时才有效,但我不想这样做,我宁愿调整准备好的语句的 sql,使其只需要一个 ? 但将其应用于所有 WHERE 条件。类似的东西

WITH VAl = ? SELECT * FROM mytable WHERE col1 = VAL AND col2 = VAL AND col3 = VAL;

但是这个尝试似乎不起作用。有没有办法在sql字符串中多次使用一个准备好的语句参数?

我尝试过的其他事情:

在@Selvin 的善意建议之后,我为准备好的语句使用了以下 sql 字符串:

DECLARE val varchar(30) :=? ; SELECT * FROM mytable WHERE col1=&val AND col2=&val AND col3=&val

然后我收到错误ORA-06550:第 1 行,第 33 列:pls-00103:在预期以下情况之一时遇到符号“SELECT”: [...]”

解决方法

如果我猜对了,你需要所有三列同时等于相同的值,所以我猜这些 SQL 会帮助你

SELECT * FROM mytable WHERE col1 = ? AND col1 = col2 AND col1 = col3;

UPD:有一个更好的或者我会说更紧凑的想法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。