我有:
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
答案 0 :(得分:0)
cast((convert(int,ISNULL(RealEstateTax_Suma,0)) / 5 / 1.2) as varchar(8)) + ' m2'
答案 1 :(得分:0)
您还没有列出整个查询,但我的猜测是您的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。
当一个运算符组合了两个不同数据类型的表达式时, 数据类型优先级的规则指定具有的数据类型 较低的优先级转换为具有较高的数据类型 优先。如果转换不是受支持的隐式转换, 返回错误。当两个操作数表达式具有相同的数据时 类型,操作的结果具有该数据类型。