when
nazev like '%xxxx%'
then
cast(convert(int,(isnull(RealEstateTax_Suma,0)/5/1.2)) as varchar(8)) + ' m2'
,這讓我誤差變換將varchar值 '0 M2' 爲數據類型int時
轉換失敗。
但我想我不會將結果轉換爲int或我?
結果應該25 m2
when
nazev like '%xxxx%'
then
cast(convert(int,(isnull(RealEstateTax_Suma,0)/5/1.2)) as varchar(8)) + ' m2'
,這讓我誤差變換將varchar值 '0 M2' 爲數據類型int時
轉換失敗。
但我想我不會將結果轉換爲int或我?
結果應該25 m2
可以請你試試這個...
cast((convert(int,ISNULL(RealEstateTax_Suma,0))/5/1.2) as varchar(8)) + ' m2'
您還沒有上市的整個查詢,但我的猜測是,你case
語句混合的結果類型。
例如:
case
when nazev like '%xxxx%' then
cast(convert(int,(isnull(@RealEstateTax_Suma,0)/5/1.2)) as varchar(8)) + ' m2'
else 0
end as Col1
第一殼體返回VARCHAR,在else返回int。最終結果將根據數據類型優先級嘗試轉換爲int。
當操作者結合不同的數據類型的兩個表達式,對於數據類型的優先級的 規則指定與 低優先級的數據類型被轉換爲數據類型具有較高 優先。如果轉換不是支持的隱式轉換,則返回錯誤 。當兩個操作數表達式具有相同的數據類型 時,操作結果具有該數據類型。
「CASE」表達式的其餘部分如何顯示?因爲它從'result_expressions'中的類型集合和可選的'else_result_expression'中返回最高優先級類型。 http://msdn.microsoft.com/en-us/library/ms181765.aspx – NickyvV 2014-09-05 11:27:54
更好地顯示整個查詢。 – 2014-09-05 12:57:02
通常當發生這種情況是因爲查詢中的某處你正在搞亂整數,導致你的查詢嘗試返回一個整數la @NickyvV – Jake 2014-09-05 13:28:08