使用 R 连接 HANA 时,如何将长"integer"视为 SQL 查询中的字符串?



我正在使用R包RODBC连接HANA连接HANA。其中一列类似于长整数,但实际上用作字符串,例如 2772161413309、4239530000000239。SQL 将此类数据作为整数。在 R 中,这些数字以科学记数法显示,如 2.77136e+12。从此列中获取一些值的代码是:

> a <- sqlQuery(ch,paste(' SELECT "_tmSum"."/BIC/ZTMCARDNO"
                           FROM "SAPB1P"."/BIC/AZ_RT_A212" "_tmSum"
                           WHERE "_tmSum"."/BIC/ZTMCARDNO">0 AND "_tmSum"."CALDAY" BETWEEN',StartDate,'AND',EndDate,'  '))

我有以下错误信息:

[1] "S1000 339 [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;339 invalid number:  [6930] exception 6930:nims_search_api/Search/PartSearchImpl.cpp:427nattribute value is not a numbern"                                                                                                               
[2] "[RODBC] ERROR: Could not SQLExecDirect ' SELECT                        "_tmSum"."/BIC/ZTMCARDNO"n                       FROM "SAPB1P"."/BIC/AZ_RT_A212" "_tmSum"n    

在这里,"_tmSum"。/BIC/ZTMCARDNO"是包含长整数的逗号。我想将其视为字符串并选取一些不是 0 的值。

我很

确定这里的问题在于RSAP HANA处理浮动的方式。在这两个系统中,2.77136e+12 都能正确识别:

R:

> x <- 2.77136e+12
> x
[1] 2.77136e+12
> typeof(x)
[1] "double"

汉娜:

select to_double('2.77136e+12') from dummy;
> 2771360000000

但是,您收到的错误似乎来自"SAPB1P"."/BIC/AZ_RT_A212"视图中的数据处理。

可能是在其中执行了一些数据类型转换吗?根据名称,它看起来像一个 BW 表 - 通常 BW 数据类型映射到字符类型 SQL 数据类型。因此,可能值得检查模型中使用了哪些数据类型。

我想我对SQL有误解。当整数真的很长时,比如 13 位或更多数字。SQL 会将其视为字符串。这些整数以科学记数法方式显示在 R 中,因为 R 将它们视为整数。因此,在SQL查询中,仅使用与字符相关的方法来处理它们是可以的。

最新更新