我只想根据以下查询中的某些条件将10.111
转换为10
Select
case when 2=1 then
CONVERT(decimal(10,3), 10.111)
else
CONVERT(decimal(10,0), 10.111)
end
但它返回10.000 我怎么能得到10?
答案 0 :(得分:8)
CASE
表达式作为一个整体必须全部评估为相同的数据类型。让一个分支评估为decimal(10,3)
而另一个分支评估为不同数据类型的唯一方法是对sql_variant
进行强制转换
Select
case when 2=1 then
CONVERT(decimal(10,3), 10.111)
else
CAST(FLOOR( 10.111) AS SQL_VARIANT)
end