在R中使用MonetBlite中的WHERE子句时出现问题

在R中使用MonetBlite中的WHERE子句时出现问题,r,monetdblite,R,Monetdblite,我试图在R64位3.5.1中使用MonetBlite。 我的问题是,我无法使用SQL命令筛选数据,例如: dbGetQuery(DB,'select * from table1 where "var1" = "1"') 我得到这个错误: Error in .local(conn, statement, ...) : Unable to execute statement 'select * from table1 where "var1" = "1"'. Server says 'Pa

我试图在R64位3.5.1中使用MonetBlite。 我的问题是,我无法使用SQL命令筛选数据,例如:

dbGetQuery(DB,'select * from table1 where "var1" = "1"')
我得到这个错误:

Error in .local(conn, statement, ...) : 
  Unable to execute statement 'select * from table1  where "var1" = "1"'.
Server says 'ParseException:SQLparser:42000!SELECT: identifier '1' unknown'.

有什么想法吗?

对于常量值,需要使用单引号(
)或无引号表示数值。在你的例子中

dbGetQuery(DB,“从表1中选择*,其中“var1”=1”)

dbGetQuery(DB,'select*从表1中,其中“var1”=“1\”)

dbGetQuery(DB,“从表1中选择*,其中\“var1\”=“1”)

应该都能用


一般规则是,标识符(
table1
var1
)通常只需要在包含空格或大写字符和常量(
1
)的情况下用
引用如果它们是字符串,则只需要用
'
引用。

感谢您的回复。
\'
有效。在where子句中使用搜索参数,例如:
dbGetQuery(DB,'SELECT*FROM table1,其中“var1”=\':x\'',param=list(x=c('1','2','3'))
。这不会返回任何内容。