0

我有一个查询,它对特定列名的值进行四舍五入:

  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.

我在这里犯了什么错误以及如何解决

4

1 回答 1

3

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

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

cast(round([T1].[CIMtrek_CI_Act],0) as int)
于 2013-03-01T11:24:42.397 回答