Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否将R变量传递给RODBC的sqlQuery?_Sql_R_Rodbc - Fatal编程技术网

是否将R变量传递给RODBC的sqlQuery?

是否将R变量传递给RODBC的sqlQuery?,sql,r,rodbc,Sql,R,Rodbc,有没有办法将R中定义的变量传递给RODBC包中的sqlQuery函数 具体来说,我需要将这样一个变量传递给标量/表值函数、存储过程和/或SELECT语句的WHERE子句 例如,让我们: x <- 1 ## user-defined 那么 或者 或者 显然,这些都不起作用,但我认为有某种东西可以实现这种功能。构建要传递的字符串。所以不是 example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)") 做 它将填充x的值。尝

有没有办法将R中定义的变量传递给RODBC包中的sqlQuery函数

具体来说,我需要将这样一个变量传递给标量/表值函数、存储过程和/或SELECT语句的WHERE子句

例如,让我们:

x <- 1 ## user-defined
那么

或者

或者


显然,这些都不起作用,但我认为有某种东西可以实现这种功能。

构建要传递的字符串。所以不是

example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)")

它将填充x的值。

尝试使用此选项

x <- 1
example2 <- fn$sqlQuery(myDB,"SELECT * FROM dbo.some_random_table AS foo WHERE foo.ID = '$x'")

如果您使用sprintf,您可以非常轻松地使用变量替换构建查询字符串。为了更加易于使用,如果您预先解析我正在使用stringr的查询字符串,您可以在代码中的多行上编写它

e、 g


然而,这个函数在R中似乎不存在,所以我在Twitter上四处询问,一个非常有用的家伙回答说他自己的函数可以在R中使用。看看吧

使用更多变量可以执行以下操作:

  aaa <- "
      SELECT   ColOne, ColTwo 

FROM    TheTable 

 WHERE  HpId =  AAAA            and

  VariableId = BBBB     and 

  convert (date,date )  < 'CCCC'
  "


--------------------------

  aaa <- gsub ("AAAA",  toString(111),aaa)

  aaa <- gsub ("BBBB",  toString(2222),aaa)

  aaa <- gsub ("CCCC",  toString (2016-01-01) ,aaa)

and和Error的重复:未找到对象“fn”。我怀疑它正在使用。但请记住,如果x值类似于col,则会产生可怕的后果;从我的表格中删除*;从my_table_fn col.中选择*这就是为什么使用占位符比粘贴要好得多的原因。有些驱动程序支持占位符,有些不支持。也许可以改进@Dirk的答案,您可以使用sprintf构建字符串,我发现它比粘贴更容易阅读,例如
example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)")
example <- sqlQuery(myDB, paste("SELECT * FROM dbo.my_table_fn (", 
                                x, ")", sep=""))
x <- 1
example2 <- fn$sqlQuery(myDB,"SELECT * FROM dbo.some_random_table AS foo WHERE foo.ID = '$x'")
q1 <- sprintf("
               SELECT basketid, count(%s)
               FROM %s
               GROUP BY basketid
              "
              ,item_barcode
              ,dbo.sales
              )
q1 <- str_replace_all(str_replace_all(q1,"\n",""),"\\s+"," ")
df <- sqlQuery(shopping_database, q1)
$: w = "He{0}{0}{1} W{1}r{0}d".format("l","o")
$: print(w)
"Hello World"
  aaa <- "
      SELECT   ColOne, ColTwo 

FROM    TheTable 

 WHERE  HpId =  AAAA            and

  VariableId = BBBB     and 

  convert (date,date )  < 'CCCC'
  "


--------------------------

  aaa <- gsub ("AAAA",  toString(111),aaa)

  aaa <- gsub ("BBBB",  toString(2222),aaa)

  aaa <- gsub ("CCCC",  toString (2016-01-01) ,aaa)