2011-09-23 111 views
2

我只是想基于以下查询SQL相当于Math.Floor()在C#

Select 
    case when 2=1 then 
     CONVERT(decimal(10,3), 10.111) 
    else 
     CONVERT(decimal(10,0), 10.111) 
    end 

但它返回10.000 我如何获得10一些条件转换10.111到10?

回答

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