2017-05-29 44 views
0

我正在使用R軟件包RODBC連接HANA。其中一列就像一個長整數,但實際上用作一個字符串,如2772161413309,4239530000000239.SQL將這些數據視爲整數。在R中,這些數字以科學記數法顯示,如2.77136e + 12。我的代碼,在此列挑選了一些值是:在使用R連接HANA時,如何在SQL查詢中將長「整數」看作字符串?

> 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」是包括長的comlumn整數。我想認爲它是字符串,並拿起一些不是0的值。任何人都可以請幫我嗎?

回答

1

我敢肯定,這裏的問題是而不是與方式RSAP HANA句柄浮游物。 在這兩種系統2.77136e + 12被正確識別:

R:

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

HANA:

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

> 2771360000000 

您收到的錯誤,但是,似乎來自內的數據處理"SAPB1P"."/BIC/AZ_RT_A212"查看。

難道是在它裏面進行一些數據類型轉換嗎?基於名稱,它看起來像BW表 - 通常BW數據類型映射到字符類型SQL數據類型。因此,檢查模型中使用的數據類型可能是值得的。

0

我想我對SQL有一個誤解。當整數非常長時,如13位或更多位數。 SQL將它視爲一個字符串。這些整數以科學記數法顯示在R中,因爲R認爲它們是整數。因此,在SQL查詢中,只需使用與字符相關的方法來處理它們即可。

相關問題