我有一个名为“客户”的 SQL 表。其中是一个 CustomerNumber 字段,其值类似于“0001234567”,即它们仅由数字组成,但有些包括前导 0。所以,当我尝试运行类似
sqlFetch(channel=myconn, sqtable="Customers", stringsAsFactors=FALSE)
它返回我的客户表,其中 CustomerNumber 字段是数字(而不是字符),因此我丢失了所有前导 0。
有没有一种方法可以指定列的字段类型或不会截断所有前导 0 的替代解决方案?
最佳答案
您可以使用 as.is
更全面地控制列的类型参数,记录在 ?sqlFetch
的详细信息部分以及 ?sqlQuery
的链接文档和 ?sqlGetResults
.
基本上,它是一个逻辑向量或一个数字或字符索引向量,指定哪些列保持不变。该载体将根据需要回收。
(请注意,即使 C API 正确返回 char 或 varchar 作为数据库中列的数据类型,RODBC 也会使用 type.convert
破坏存储在数据库中的列。维护者没有回复我的 4-5 封电子邮件中的任何一封这个问题在过去的一年里,从那以后我只是简单地使用了 RODBC 的 fork 版本和所需的 one line modification。)
关于sql - 从 SQL 数据库读取时如何指定字段数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229590/