具有可变长度 IN 子句的 JDBC 更新 [重复]

Posted

技术标签:

【中文标题】具有可变长度 IN 子句的 JDBC 更新 [重复]【英文标题】:JDBC update with variable length IN clause [duplicate] 【发布时间】:2019-01-10 00:20:57 【问题描述】:

所以我有一个查询需要像UPDATE entity WHERE id IN (:ids) 一样运行。我知道在做SELECT 时我可以做类似的事情

val sql = "SELECT * FROM entity WHERE id IN (:ids)";
jdbcTemplate.queryForList(sql, Collections.singletonMap("ids", ids));
有什么方法可以为“更新”查询完成此操作,我不必将我的 id 列表转换为逗号分隔的字符串并调用它
val params = ids.joinToString(",")
jdbcTemplate.update(sql, mapOf(Pair("ids", params)))

编辑:结果我列出的第二种方式甚至不起作用,因为它需要一个 Double 并得到一个字符串

【问题讨论】:

【参考方案1】:

在 Java 中,您可以这样做:

String joinedIds = Arrays.stream(tradeListIds).collect(Collectors.joining(", "));

【讨论】:

嘿,知道这很有用。谢谢。实际上并没有解决我的问题,因为它期望双倍因为数据库条目是INT(11)。我正在使用 Kotlin 并更新了我上面的示例(即使它不起作用)以更 kotlin 的方式进行。

以上是关于具有可变长度 IN 子句的 JDBC 更新 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何为“IN 子句”传递可变参数

使用 JDBC 参数化 IN 子句的最佳方法是啥? [复制]

带有 IN 子句参数的 Oracle 存储过程

如何将可变长度列表的 Pandas DataFrame 列(或系列)转换为固定宽度的 DataFrame [重复]

在 jdbc 中使用 where in 子句

具有可变大小变量列表的 MySQL 准备语句