无法在Kotlin中运行“Where In”查询

我试图让这种查询(我正在与postgres)工作:

select * from users where user_id in [1,2,3] 

唯一的问题是查询不能用这种[1,2,3]的列表工作,只能使用这种类型(1,2,3)。

我试图将列表[1,2,3]转换为列表(1,2,3),但在Kotlin它并没有让我这样做..

我会喜欢一些帮助。

如果可能,最好使用预处理语句而不是动态生成的SQL字符串。 表达式con.createArrayOf("INTEGER", array)应该在PostgreSQL中工作:

 val array = arrayOf(1, 2, 3) /* * Or: * val data = listOf(1, 2, 3) * val array = data.toTypedArray() */ val con = getConnection() val stmt = con.prepareStatement("select * from users where user_id in ?") stmt.setArray(1, con.createArrayOf("INTEGER", array)) val rs = stmt.executeQuery() 

您可以创建一个扩展函数来将列表转换为字符串(1,2,3)

 fun List<Int>.toParenthesis() = this.joinToString(separator = ",", prefix = "(", postfix = ")") 

用法:

 "select * from users where user_id in ${listOf(1,2,3).toParenthesis()}"