使用numeric作为字段名称中的第一个字符进行查询

时间:2014-05-29 13:30:46

标签: sql r sql-server-2008 field rodbc

我正在通过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”。显然,用数字开始一个字段是一种糟糕的数据管理实践,而不是我自己的做法。

1 个答案:

答案 0 :(得分:1)

如果标识符不以字母字符或下划线开头,则需要将它们转义。在SQL Server中,使用方括号来转义它们。所以试试:

and [1YearTotalSpend] > 0
"...order by [1YearTotalSpend]

我还建议您构建列名和表名,这样就不需要对它们进行转义。

Here是关于该主题的优秀文档。