首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将R变量传递给RODBC的sqlQuery?

将R变量传递给RODBC的sqlQuery?
EN

Stack Overflow用户
提问于 2010-12-02 07:08:16
回答 4查看 32.5K关注 0票数 22

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

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

例如,让:

x <- 1 ## user-defined

然后,

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

或者..。

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

或者..。

example3 <- sqlQuery(myDB,"EXEC dbo.my_stored_proc (x)")

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-02 07:16:50

构建您想要传递的字符串。因此,不是

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

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

它将填充x的值。

票数 20
EN

Stack Overflow用户

发布于 2013-03-28 22:23:58

如果您使用sprintf,您可以很容易地使用变量替换来构建查询字符串。为了更加易于使用,如果您预先解析了该查询字符串(我使用的是string r),则可以在代码中将其写在多行上。

例如:

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)

附注和对另一个R章节的致敬

最近,我发现我想通过使用Python的string.format()函数来使变量替换变得更简单,该函数允许您重用和重新排序字符串中的变量

例如:

$: w = "He{0}{0}{1} W{1}r{0}d".format("l","o")
$: print(w)
"Hello World"

然而,这个函数似乎在R中并不存在,所以我在推特上四处打听了一下,一个非常有帮助的家伙@kevin_ushey用他自己的custom function回复了R,看看这个!

票数 3
EN

Stack Overflow用户

发布于 2010-12-23 13:03:24

试试这个

x <- 1
example2 <- fn$sqlQuery(myDB,"SELECT * FROM dbo.some_random_table AS foo WHERE foo.ID = '$x'")
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4330072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档