有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java将值传递到sql WHERE子句中

我有一个sql查询,比如

(sqlQuery)
SELECT *
FROM table1
WHERE to_char(id) in (?)

然后在我准备好的声明中

preparedStatement ps = new preparedStatemend(sqlQuery)
ps.setString(1,param);

其中我的参数是一个字符串链,看起来像param = '12','34', '444'

现在,我想当我执行它的时候,一切都会好起来,但事实并非如此,我得到了错误,比如ORA 01460未实现或不合理的转换

那么,如何将包含几个值的参数传递到sql查询中的IN子句中呢


共 (1) 个答案

  1. # 1 楼答案

    必须为IN子句的每个可能值指定一个?

    例如,如果在IN子句中有4个选项,那么:

    to_char(id) in (?)
    

    应该是:

    to_char(id) in (?, ?, ?, ?) 
    

    您还应该通过依次递增要设置的参数的索引来设置每个参数:

    因此:

    ps.setString(1,param);
    

    应该是:

    int index = 1;
    for( String s : inValues ) {
       ps.setString(index++, s); 
    }