如何在R中的SQL Interpolate中使用SQL查询“ LIKE”?

时间:2019-10-07 14:53:40

标签: sql r

我正在用R编写一个应用程序,该应用程序进行参数化查询并将其发送到数据库,以将适用的信息返回到应用程序中的数据表。由于搜索查询的性质,我需要使用SQL术语LIKE,并在搜索词前后加上%符号。为了保护数据库免受SQL注入,我需要使用sqlInterpolate函数。但是我在sqlInterpolate函数进行查询的方式上遇到问题。

现在,当我进入R控制台时,此方法有效:

> sql <- sqlInterpolate(conn, "SELECT * FROM table WHERE Column1 LIKE '%000g7%'")
> dbGetQuery(conn, sql)

但这不是,

> str <- "000g7"
> sql <- sqlInterpolate(conn, "SELECT * FROM table WHERE Column1 LIKE '%?search%'", search = str)
> dbGetQuery(conn, sql)

它只是返回一个空列表。如果我可以在查询语法方面获得一些帮助,我将不胜感激。我几乎肯定,这与撇号或沿这些线的东西有关。或者,如果有更好的方法可以做到这一点,那么我就会不知所措。

1 个答案:

答案 0 :(得分:2)

对于LIKE运算符,%实际上是您要搜索的字符串的一部分,因此您只需在插入值之前将其添加到要搜索的值中即可。值查询。您应该使用

str <- "000g7"
sql <- sqlInterpolate(conn, "SELECT * FROM table WHERE Column1 LIKE ?search", 
  search = paste0("%", str, "%"))