![](/img/trans.png)
[英]Converting decimal values to non decimal in computed column in oracle 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.