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

How to consider a long "integer" as a string in SQL query when useing R to connect HANA?

我正在使用 R 包 RODBC 连接 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:427\nattribute value is not a number\n"                                                                                                               
[2] "[RODBC] ERROR: Could not SQLExecDirect ' SELECT                        \"_tmSum\".\"/BIC/ZTMCARDNO\"\n                       FROM \"SAPB1P\".\"/BIC/AZ_RT_A212\" \"_tmSum\"\n    

这里,"_tmSum"."/BIC/ZTMCARDNO"是包含长整数的列。我想将其视为字符串并选择一些非 0 的值。

我想我对SQL有误解。当整数非常长时,比如 13 位或更多位。 SQL 会将其视为字符串。这些整数以科学计数法在 R 中显示,因为 R 将它们视为整数。所以,在SQL查询中,只用字符相关的方法处理就可以了。

我很确定这里的问题 而不是 RSAP HANA 处理浮点数的方式。 在两个系统中 2.77136e+12 都被正确识别:

回复:

> 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 table - 通常 BW 数据类型映射到字符类型 SQL 数据类型。因此,可能值得检查模型中使用的数据类型。