我正在通过RODBC运行SQL查询。我有一个字段让我查询问题,标题为“1YearTotalSpend”。它是一个数字字段,在进行一些诊断后,我可以看到字段值的内容没有错误,这些数字是数字。
具体来说,我收到的错误是:"[RODBC] ERROR: Could not SQLExecDirect...
library(RODBC)
# This works fine, where "AnyOtherSpendField"
# is a field whose name doesn't start w/ a numeral.
df <- sqlQuery(handle, "select ID, FieldA, FieldB, FieldC
from Table.A
where Type not like 'NULL'
and Code like 'SUB'
and Status in ('100','440','222')
and AnyOtherSpendField > 0
order by AnyOtherSpendField desc ")
# however both of the two options below fail:
"...and 1YearTotalSpend > 0"
"...order by 1YearTotalSpend ")
鉴于我的其余代码有效,我强烈怀疑错误是因为字段以1开头,而不是“One”。显然,用数字开始一个字段是一种糟糕的数据管理实践,而不是我自己的做法。
答案 0 :(得分:1)
如果标识符不以字母字符或下划线开头,则需要将它们转义。在SQL Server中,使用方括号来转义它们。所以试试:
and [1YearTotalSpend] > 0
"...order by [1YearTotalSpend]
我还建议您构建列名和表名,这样就不需要对它们进行转义。
Here是关于该主题的优秀文档。