我正在尝试在R64bit 3.5.1中使用MonetDBLite。我的问题是,我无法使用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,'select * from table1 where "var1" = 1')
或
dbGetQuery(DB,'select * from table1 where "var1" = '1'')
或
dbGetQuery(DB,"select * from table1 where "var1" = '1'")
应该都能工作。
一般规则是,标识符(table1
或var1
(通常只需要在包含空格或大写字符的情况下用"
引用,而常量(1
(如果是字符串,则只需要用'
引用。