在 SQL 查询的 WHERE 条件中多次使用同一个参数,以便在 JDBC 中使用
Utilise the same parameter multiple times in WHERE conditions of an SQL query for use in 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 字符串中多次使用 one 准备好的语句参数?
我尝试过的其他事情:
在@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)
我想通过 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 字符串中多次使用 one 准备好的语句参数?
我尝试过的其他事情:
在@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)