R ODBC - 用空格查询列名

Posted

技术标签:

【中文标题】R ODBC - 用空格查询列名【英文标题】:R ODBC - Querying Column name with spaces 【发布时间】:2017-06-21 17:12:30 【问题描述】:

我正在尝试通过 R OBDC 进行查询。但是一个列名上有空格。例如,[Account No]

我用这段代码查询:

esiid_ac <- sqlQuery(myconn, paste("
 SELECT * FROM CustomerUsage WHERE ((CustomerUsage.Account No ='", 12345, "')) ", sep=""),as.is=TRUE)

我收到以下错误:

[1] "42000 102 [Microsoft][ODBC Driver 11 for SQL Server][SQL 服务器]'No' 附近的语法不正确。" [2] "[RODBC] 错误:无法 SQLExecDirect '\n SELECT * FROM CustomerUsage WHERE ((CustomerUsage.Account No ='678987')) '

如何解决?

我可以用列索引而不是列名来读取这个表吗?

谢谢。

【问题讨论】:

【参考方案1】:

在稍微修改了引号之后,这对我有用:

df <- sqlQuery(myconn, 'SELECT * FROM mytable WHERE "column name" =123', as.is=TRUE)

【讨论】:

【参考方案2】:

您是否尝试过方括号(当列名中有特殊字符时它们对我有用)?

esiid_ac <- sqlQuery(myconn, paste(" SELECT * FROM CustomerUsage WHERE ((CustomerUsage.[Account No] ='", 12345, "')) ", sep=""),as.is=TRUE)

【讨论】:

【参考方案3】:

您可以使用\"COL_NAME\" 代替COL_NAME,并像往常一样使用它。例如:

esiid_ac <- sqlQuery(myconn, "SELECT * FROM CustomerUsage WHERE \"Account No\" = 12345")

【讨论】:

【参考方案4】:

你可以试着把列名像[Account No]然后试试吗?

【讨论】:

【参考方案5】:

你可以试试……

df <- sqlQuery(myconn, "SELECT * FROM mytab WHERE `crazy column name` =123", as.is=TRUE)

【讨论】:

也试过了。 R 处理列中空格的方式。它给出了同样的错误。

以上是关于R ODBC - 用空格查询列名的主要内容,如果未能解决你的问题,请参考以下文章

熊猫查询功能不适用于列名中的空格

Hive:查询表,列名包含关键字和空格

nHibernate 命名查询、结果转换和带空格的列名

查询名称中包含空格的表

当列名包含空格和特殊字符时从 data.table 包中读取?

如何从图中的列名中删除下划线?