我希望在sqldf()中运行以下sql语句:
select columnA, "new_column_value" as columnB, "column.C" from mytable
where columnA in ('123','456')但是当我在sqldf中运行时:
sqldf('select columnA, "new_column_value" as columnB, "column.C" from mytable
where columnA in ('123','456')')我得到了一个明显的错误,即单引号已经转义了in('123','456')处的sql代码,如果我用双引号将sql代码括起来,那么在我创建一个新列"new_column_value"时,或者当我从无用的命名为"column.C"的"column.C"中选择via字面量字符串时,sql就会转义。
所以我有点进退两难。这就好像我想在sqldf()调用中使用sql代码包装,而不是使用引号。
我可以在我喜欢的地方转义单引号和双引号吗?
发布于 2017-08-09 22:22:26
在R字符串中,双引号由反斜杠转义:
test <- "String escaping is \"easy\"!"这对你来说也应该是可行的。(整个命令用双引号括起来,内部命令用反斜杠转义)
如果您查看intToUtf8(34),也可以看到这一点,其中34是表示双引号的ASCII码。
发布于 2017-08-09 22:40:44
假设使用默认的sqlite后端,则可以执行以下任一操作:
> sqldf("select \"Time\" from BOD")
Time
1 1
2 2
3 3
4 4
5 5
6 7
> sqldf("select [Time] from BOD")
Time
1 1
2 2
3 3
4 4
5 5
6 7问题中的更新声称这是有效的,但它给出了常量字符串Time,而不是同名的变量。
> sqldf("select 'Time' from BOD")
'Time'
1 Time
2 Time
3 Time
4 Time
5 Time
6 Timehttps://stackoverflow.com/questions/45593204
复制相似问题