簡體   English   中英

在將“ SQL表列”中的某些值轉換為十進制時需要幫助

[英]Need help in converting some values in my SQL Table Column to decimal

我有一個Varchar列,其中包含諸如1.025407162E7、1.268479084E7之類的數據,基本上它包含稱為E7的內容。 如何將其轉換為十進制?

我試圖將其轉換為十進制,我可以刪除E7並將小數點向前移動7步,如果沒有太多數字,則可以添加7個零。 但是我一直在尋找正確的方法來做到這一點。

CONVERT(DECIMAL(27, 7), ETL_AM.BNK_SHR_LGR_BAL_AMT)

所以實際值看起來不一樣

1.025407162E7 = 10254071.6200000 and 1.268479084E7 = 12684790.8400000

這是SQL Server的有效float常量 因此,將字符串轉換為浮點數,然后轉換為十進制數。

CONVERT(DECIMAL(27, 7), cast(ETL_AM.BNK_SHR_LGR_BAL_AMT as float))

例如

select convert(decimal(27,7), cast( '1.025407162E7' as float) )

退貨

10254071.6200000

好的,所以Error_2646已將我帶往正確的方向。 我將值轉換為REAL,然后轉換為十進制。

CASE WHEN SF_FAM.FinServ__Balance__c like '%E%' THEN CONVERT(DECIMAL(27, 7), CONVERT(float(27), SF_FAM.FinServ__Balance__c))
ELSE CONVERT(DECIMAL(27, 7), SF_FAM.FinServ__Balance__c) END

如果它是指數函數,則將其轉換為浮點數后的簡單選擇可以為您提供小數。

SELECT CAST('1.025407162E7' AS FLOAT)

否則,如果E是一個隨機字符,並且您想進行計算,則可以使用case語句來執行。

DECLARE @value VARCHAR(100) 
SET @value =  '1.025407162E7'
SELECT CASE WHEN @value like '%E7%' 
THEN (1.025407162 * 10000000)
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM