预准备语句可以使用多个值

时间:2018-02-01 05:51:53

标签: r jdbc prepared-statement

考虑像

这样的SQL语句
Select * from items where id in (123,456,789)

我可以使用像

这样的预备语句吗?
Select * from items where id in ?

然后提供参数作为集合或列表?也许我需要围绕“?”括号。

我打算在R中使用它,但我想这是对JDBC的一般查询。

1 个答案:

答案 0 :(得分:1)

两个部分解决方法:

  1. 创建一个将in (?)更改为in (?,?,?)的函数,具体取决于提供的值列表的长度,然后将该数组拆分为单独的绑定值。

    • 优点:一个查询;绑定是直截了当的
    • 缺点:大型名单不可行;必须在查询管理器中包装您的查询,而不是万无一失的
  2. 将值上传到临时表并将查询更改为

    select * from items where id in (select val from temptable)
    
    • 优点:处理任意数量的值;不需要欺骗SQL;绑定就像对多行插入一样。
    • 缺点:多次通话;需要温度表和清理;与更复杂的查询集成可能有问题(??)