由於我的理由,我不能幫助我有一個varchar列,數據如下:820.0E-12,10.0E + 00。在視圖中鑄造科學記數法(從varchar - >數字)
我想要數值。所以我有這個測試查詢其工作原理:
declare @d varchar(256)
set @d = '820.0E-12'
select
CASE
WHEN @d like '%E-%' THEN LTRIM(RTRIM(CAST(CAST(@d AS FLOAT) AS DECIMAL(18,18))))
WHEN @d like '%E+%' THEN NULL
ELSE @d
END
我的結果是:0.000000000820000000(這是我想要什麼)
更改我的SQL佔數字> 0( 10.0E + 00)是這樣的:
WHEN @d like '%E+%' THEN CAST(@d AS FLOAT)
我的結果變爲:8.2E-10(這是不我想要的)
如果我改變@ d = '10 .0E + 00'然後我得到(這是正確的)。
我有一個觀點,我需要從一個varchar列輸出,其中包含科學記數法,鑄造/轉換爲十進制(18,18)。
有人能告訴我這裏有什麼瘋狂嗎?
或者,也許我的問題應該是,如何在視圖中將varchar科學記數法列轉換爲十進制輸出?
我的第一個WHEN語句也適用於數字< 0,但我也需要考慮號碼> 0。當我更改第二個的時候,要包括CAST,它打破/給出錯誤的結果。
你發佈的代碼對我來說工作正常...當我改變爲'E + 12'時,CASE的輸出是'820000000000000' – JNK