sql server 2008中的round函数

时间:2013-03-01 11:19:58

标签: sql sql-server-2008-r2 rounding

我有一个查询来舍入特定列名的值:

  select round([CIMtrek_CI_Act],0) as CI FROM [CIMtrek_SystemTable_DatawareHouse]

其中[CIMtrek_CI_Act_33]不为空且CIMtrek_CIMtrekUniqueID = 1917

,最好的是

CI
1

但是当我执行以下查询时:

(SELECT  (SELECT [T1].[CIMtrek_CIMtrekUniqueID]  AS [CIMtrek_CIMtrekUniqueID]
,round([T1].[CIMtrek_CI_Act],0)   AS [CIMtrek_CI_Act]
 FROM [CIMtrek_SystemTable_DatawareHouse] T1 
 WHERE T1.CIMtrek_CIMtrekUniqueID = 1917 
 FOR  XML PATH('Record'), TYPE )) FOR XML PATH('Root')

结果是

<Root>
  <Record>
    <CIMtrek_CIMtrekUniqueID>1917</CIMtrek_CIMtrekUniqueID>
    <CIMtrek_CI_Act>1.000000000000000e+000</CIMtrek_CI_Act>
  </Record>
</Root>

该值未四舍五入。

如果值为10.58,则必须获得11。此字段为varchar如果没有值,我必须获得empty字符串而不是0

我在这里做了什么错误以及如何修复相同的

1 个答案:

答案 0 :(得分:3)

圆润。您看到的是SQL Server float的XML文本表示。

如果您不喜欢这样,请在舍入后将其强制转换为整数。

cast(round([T1].[CIMtrek_CI_Act],0) as int)