2015-02-23 55 views
1

我有這個疑問:SQL服務器:轉換誤差數值爲varchar情況下

CASE ClaimsFees.TBA 
    WHEN 0 THEN CAST(IndemnityReserve AS NUMERIC(9,2)) 
    ELSE 'TBA' 
END AS 'Reserve Indemnity' 

,但我總是得到這樣的錯誤:

Error converting data type varchar to numeric

我試圖TBA轉換爲數字,但我可以」 t做到這一點,我也無法將所有結果轉換爲varchar,因爲當我轉移到Excel文件時,編號1.325,27變爲132.527,00 ### ## 0.00格式。

在SQL Server中有沒有一種方法可以用來解決這個問題?

+6

你當然不能在'CASE'語句中混合數據類型。你可以使用NULL而不是'TBA'嗎? – 2015-02-23 11:13:04

+0

你的Excel邊問題只是Excel格式。你如何獲得這些數據到Excel? – 2015-02-23 11:14:02

+0

單引號指定SQL中的字符串。在變量名稱周圍使用雙引號。 – 2015-02-23 11:15:30

回答

2

該列只能有一個類型,而'TBA'只能是一個字符串,所以您需要將數字設置爲一個字符串。

CASE ClaimsFees.TBA WHEN 0 
then cast(cast(IndemnityReserve as NUMERIC(9,2)) as varchar(12)) 
else 'TBA' 
end as 'Reserve Indemnity', 
+0

是的,這工作得很好,在sql中我得到正確的值,但是當我將它們傳遞給Excel spith.xls時,我需要格式化單元格.NumberFormat =「##,## 0.00」和1325,27變成132.527,00,但是我需要1.325,27,我認爲現在只是一個格式問題,但我怎麼解決? – Andrea 2015-02-23 11:30:07

+0

@Andrea這是關於如何在Excel中格式化數字的另一個問題 - 我建議您提出一個新問題。 – 2015-02-23 11:33:45

+0

正確,但很抱歉,但即時新的stackoverflow – Andrea 2015-02-23 11:38:58

相關問題