【发布时间】:2018-06-22 17:16:56
【问题描述】:
我有一个类似的 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 uninmplemented or unreasonable conversion 这样的错误。
那么,如何将包含几个值的参数传递到 sql 查询的 IN 子句中?
【问题讨论】:
-
简单地将 List
传递到 IN 子句中,即将参数转换为 List 而不是带有逗号的单个字符串。 -
你应该传递一个
Set<String> -
这更像是一个 SQL 问题而不是 Java 问题。但问题是您需要与参数一样多的问号
?。因此,您每次使用时都需要创建PreparedStatement。 -
我的参数是一个字符串链,看起来像
param = '12','34', '444'我相信你在做这样的事情时正在检查 SQL 注入之类的东西? -
与您的问题无关,但使用
where id in (?)将获得比现在更好的性能。
标签: java sql oracle jdbc where-in