【问题标题】:Update function sqldf R Language更新函数 sqldf R 语言
【发布时间】:2013-11-22 20:15:24
【问题描述】:

我对 SQLdf 有疑问。尽管我正在尝试更新表,但它始终将 NULL 作为输出。我对这个问题进行了检查,但我不知道如何解决它。我的代码是:

fn$sqldf("update cons set V1='%$numbernew%' where V1=$'contact'")

但是在我检查它是否有什么变化之后,一切都和开始时一样。任何想法都会有所帮助。

【问题讨论】:

  • 扫描包的常见问题解答有时可以是useful
  • 我知道,但与争论无关。这是一个有时会出现的问题,它与 sqldf 包有关,它不会让您轻松更新表...

标签: r sqldf


【解决方案1】:

正如 Joran 在评论中提到的,这个问题是一个 sqldf 常见问题解答。事实上它的sqldf FAQ #8

正如那里所讨论的,问题是您要求更新表但从未要求它返回表。 $'contract' 也应该是 '$contract',因为您想替换 contract,然后用单引号括住该替换。

# set up test data for reproduciblity
con <- data.frame(V1 = c("a", "b", "c"))
contract <- "a"
numbernew <- "x"

现在我们有了一些数据,试试这个:

sql1 <- fn$identity("update con set V1 ='%$numbernew%' where V1 = '$contract' ")
sql2 <- "select * from main.con"
sqldf(c(sql1, sql2))

结果是:

   V1
1 %x%
2   b
3   c

这也可以:

sqldf() # start a sequence of SQL statements

fn$sqldf("update con set V1 ='%$numbernew%' where V1 = '$contract' ")
ans <- sqldf("select * from main.con")

sqldf() # SQL statements finished

【讨论】:

  • 您好,谢谢您的回答。我确实有正确的'$contact'。我只是在这里编辑错了。我的问题(经过一段时间的搜索)是变量 numbernew 包含像 ; : 等可能被 sql 识别为命令。知道如何处理这些吗?
  • 字符串文字可能包含特殊字符。如果它们包含单引号,则将它们加倍,例如'Joe''s Pizza'
  • 怎么样?和 。 ??
  • 它们都应该工作。试试看:sqldf("select '?', '??', 'Joe''s Pizza' ")
  • 这个不清楚。您可能想从可重现的输入和输出开始另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 2017-11-27
  • 2013-05-03
  • 2015-11-07
  • 1970-01-01
  • 2021-09-04
相关资源
最近更新 更多