從 CSV 文件導入時需要小數點後 2 位的 FLOAT 數據類型
我正在使用導入/導出嚮導將 CSV 文件導入 SQL Server。CSV 文件中的數據如下所示:
...0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,164051.00,...
所有這些值都是美元金額。由於這是打包的財務軟體(更準確地說是 JD Edwards 9.2),我必須忍受所有列的數據類型都是 FLOAT 並且不,我無法更改它。
使用嚮導導入後,表在這些列中分別具有
0
和。164051
在執行預打包的 JDE 財務報告時,它包含
0
和1640.51
作為值,即,它將最後兩位數字解釋為“美分”,對此我無能為力。如果值為 ,則不是問題0
,但對於其他一切都是問題。所以我唯一的選擇是在導入後向列值添加兩個尾隨零。有什麼辦法可以做到這一點?
如果美元金額
16578.98
在 CSV 文件中,它會很好地導入並正確顯示在報告中。問題僅在於偶數美元金額或金額,如5.80
or6.10
。有任何想法嗎?
如果數據僅用於此 JDEdwards 報告,您可以簡單地將美元 (164051, 0, 16578.98) 轉換為美分(乘以 100) (16405100, 0, 1657898)。
如果數據在其他地方以正確的形式正確使用,則創建一個將美元轉換為美分的視圖,並讓 JDE 報告使用該視圖。
如果你得到分數美分( $ 12358.9275), then you’d want to round to remove the fractional part. However, I believe that would be an issue now (it’d be reported as $ 1235892.75,從你所說的)。
我建議將數據“按原樣”導入臨時表,然後使用儲存過程來驗證/將數據轉換為最終目標表。這樣,您可以處理所有“CAST/Convert/LEFT/RIGHT/etc”。那裡的功能。
對於那個特定的轉換,這應該可以工作:
CAST([YourColumnHere] AS DECIMAL(18,2))
例子:
SELECT CAST('18.40' AS FLOAT) FloatExample ,CAST(CAST('18.40' AS FLOAT) AS DECIMAL(18,2)) AS DecimalExample FloatExample DecimalExample ------------ -------------- 18.4 18.40