RODBC连接MySQL后执行SQL查询报错问题求助
问题分析与解决方案
这个问题的核心是MySQL的SQL语法对引号的使用规则导致的:MySQL默认情况下,双引号(")是用来表示字符串字面量的,而不是用来包裹表名、列名这类标识符的。你把表名和列名都用双引号括起来,MySQL会把它们当成普通字符串,自然就报语法错误了。
解决方法有两种,推荐第一种:
直接去掉所有双引号
你的列名和表名都没有空格、特殊字符,完全符合MySQL标识符的规则,不需要额外包裹引号。修改后的代码如下:test <- sqlQuery(mycon, paste('SELECT PID, NAME, FIRSTNAME1, SEXE, BIRTHDATE FROM a_patient;')) head(test)改用反引号包裹标识符
如果你的标识符包含空格或特殊字符,或者你习惯明确区分标识符和字符串,可以用MySQL的专用标识符引号——反引号(`):test <- sqlQuery(mycon, paste('SELECT `PID`, `NAME`, `FIRSTNAME1`, `SEXE`, `BIRTHDATE` FROM `a_patient`;')) head(test)
额外说明
如果实在想让MySQL支持双引号作为标识符,可以修改MySQL的sql_mode,添加ANSI_QUOTES选项,但这种方式不推荐,因为会改变默认语法规则,可能影响其他查询的兼容性,还是遵循MySQL原生语法更稳妥。
内容的提问来源于stack exchange,提问作者Robisch
相关产品推荐
相关产品推荐

