我有一个查询,它舍入特定列名的值:
select round([CIMtrek_CI_Act],0) as CI FROM [CIMtrek_SystemTable_DatawareHouse]其中CIMtrek_CI_Act_33不为null且CIMtrek_CIMtrekUniqueID = 1917
而reulst是
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。
我在这里犯了什么错误?如何改正?
发布于 2013-03-01 19:24:42
它是舍入的。您看到的是SQL Server的float的XML文本表示形式。
如果你不喜欢这样,在四舍五入后将其转换为整数。
cast(round([T1].[CIMtrek_CI_Act],0) as int)https://stackoverflow.com/questions/15156466
复制相似问题