强制 mySQL 查询为 R 中的非数字字符
Posted
技术标签:
【中文标题】强制 mySQL 查询为 R 中的非数字字符【英文标题】:Force mySQL queries to be characters not numeric in R 【发布时间】:2013-08-26 21:31:49 【问题描述】:我正在使用 RODBC 将 R 与 mysql 数据库连接,但遇到了问题。我需要根据唯一的 ID 号(下面的 IDNUM)加入两个表。问题是 ID 号是 20 位整数,而 R 想要对它们进行四舍五入。好的,没问题,我将使用 CAST(blah AS CHAR) 将这些 ID 作为字符串而不是数字来提取。
但是 R 将传入的字符串视为数字并认为“嘿,我知道这些是字符串......但这些字符串只是数字,所以我很确定这个人希望我将其存储为数字,让我为他解决这个问题”然后将它们转换回数字并四舍五入。我需要强制 R 接受给定的输入,但不知道如何实现。
这是我正在使用的代码(Interval 是一个包含开始和结束时间戳的向量,因此此代码仅用于从选定的时间段提取数据):
test = sqlQuery(channel, paste("SELECT CAST(table1.IDNUM AS CHAR),PartyA,PartyB FROM
table1, table2 WHERE table1.IDNUM=table2.IDNUM AND table1.Timestamp>=",Interval[1],"
AND table2.Timestamp<",Interval[2],sep=""))
【问题讨论】:
“问题是 ID 号是 20 位整数” 0_0 ... 为什么?!为什么要尝试在 MySQL 数据库中存储 ONE QUINTILLION 行?! 哈,不是我的数据库!我在做合同工作,得拿给我的东西:) 我不是 R 用户,但我只是看到了这个,这对我来说似乎是一个清晰而合理的问题。我不明白为什么它被否决了,更不用说为什么它被标记为质量非常低了。有人愿意解释他们的推理吗? @Mark : 请看here: 原因 @Metrics 有些问题格式正确,无需可复现的代码即可回答。 【参考方案1】:您很可能想阅读?sqlQuery
上您正在使用的函数的文档,其中包括有关以下两个相关参数的说明:
as.is 作为字符返回的列(如果有)应该是 转换为另一种类型?允许的值与 read.table 相同。看 “细节”。
和
stringsAsFactors 逻辑:列应该作为字符返回并且 不被 as.is 排除并且不转换为其他任何东西 被转换 因素?
您很可能希望在as.is
中指定问题中的列。
【讨论】:
as.is == !stringsAsFactors 并且只会影响字符到因子的转换以上是关于强制 mySQL 查询为 R 中的非数字字符的主要内容,如果未能解决你的问题,请参考以下文章