【问题标题】:convert data types when extracting information from a database using sql in R language使用R语言中的sql从数据库中提取信息时转换数据类型
【发布时间】:2019-10-21 04:14:32
【问题描述】:

我正在尝试从三个与内部联接连接的表中提取一些信息。但是,当我尝试执行 on 语句时,程序告诉我其中一列是 varchar 类型,另一列是文本类型。我不能对它们使用“=”运算符。我不知道哪一列是文本,哪一列是 varchar,因为当我尝试在 R studio 中查看它们时,它们都显示为类型字符。我尝试了转换、强制转换和使用 LIKE 代替 =,但都没有奏效。

我无法更改列的变量类型,因为它们不是我的表。这些是 SQL 代码,它们将成为查询的一部分,并通过 R 语言提交到数据库,R 语言将接收和处理任何返回的数据。

我第一次尝试

"ON CONVERT(varchar(10), A.A11) = CONVERT(varchar(10), B.B2)"

然后

"ON CAST(A.A11 AS text) = CAST(B.B2 AS text)"

还有

"ON A.A11 LIKE B.B2"

我尝试将它们更改为 text 和 varchar,但仍然无法正常工作。 错误信息是

42000 402 [Microsoft][ODBC SQL Server Driver][SQL Server]The data types varchar and text are incompatible in the equal to operator.

我按照教程和在线回答,所以应该没有任何错误

【问题讨论】:

    标签: sql r sql-server database type-conversion


    【解决方案1】:

    这在 sql server 中对我有用。附上你的示例代码

    create table #Test_1 (
    val_1 varchar(10) null
    ,check_case text null
    )
    
    
    create table #Test_2 (
    val_2 varchar(10) null
    ,check_case varchar(10) null
    )
    
    insert into #Test_1  values
    ('A','test_test')
    ,('B','check123')
    ,('C','holaman')
    
    
    insert into #Test_2  values
    ('A','check123')
    ,('B','test_test')
    ,('C','holaman')
    
    
    
    select t1.*, t2.*
    from #Test_1 t1
    inner join #Test_2 t2 on t1.val_1 = t2.val_2 and convert(varchar,t1.check_case) = convert(varchar , t2.check_case )
    

    【讨论】:

    • 当您将问题作为大查询传递给 R 代码时,您的问题将驻留。哪个可能或可能不能够处理所有 sql server 数据类型。如果是这种情况,您可能必须找到共同点并努力改变表格结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2019-11-22
    • 1970-01-01
    相关资源
    最近更新 更多