【问题标题】:'T' & 'F' reads as True and False from database'T' & 'F' 从数据库中读取为 True 和 False
【发布时间】:2013-10-28 10:54:09
【问题描述】:

我需要使用 RODBC sqlQuery 函数从其中一列包含“T”和“F”值的数据库中读取数据。然而,我的结果不断出现“真”和“假”。我找到了以下用于阅读 csv 文件的帖子。 sqlQuery 函数是否有类似的解决方法?

read.table reads "T" as TRUE and "F" as FALSE, how to avoid?

编辑:这是我在 cmets 中要求运行的代码。但是,如果不访问数据库,它将无法执行...

conn = odbcConnect(dataBaseName)
results = sqlQuery(conn, paste0("select ID, andate, antime from table.e4 where ticker in (",paste(shQuote(IDvector, type = "sh"), collapse = ', '),");"))
close(conn)

ID 是包含 'T's 和 'Fs's 的字段

【问题讨论】:

  • 如果可以的话,发布一个供人们使用的玩具示例。它总是有帮助的。
  • 我倾向于使用DBI 包,这会从我的数据库中获取正确的类型。不确定您有多少代码,但您可以尝试将其作为测试。正如@SimonO101 所说,一些示例代码会有所帮助。
  • 您查看过as.issqlQuery 选项吗?
  • 成功了!非常感谢。如果您将其发布为答案,我将非常乐意接受它

标签: r rodbc


【解决方案1】:

sqlQuery 函数有as.is 选项,来自the RODBC manual

as.is 哪些(如果有)作为字符返回的列应该转换为另一种类型?允许的值与 read.table 相同。看 “细节”。

详情
...如果as.is 对某列为真,则将其作为字符返回 向量。否则(如果检测到)日期、日期时间和时间戳值 转换为“日期”或“POSIXct”类。 ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    相关资源
    最近更新 更多