sqlserver2008中的round函数
我有一个查询,它对特定列名的值进行舍入:sqlserver2008中的round函数,sql,sql-server-2008-r2,rounding,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_CIMtre
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>
1917
1.000000000000000 E+000
该值未四舍五入
如果值为10.58
,则必须得到11
。如果没有比0
更大的varchar
值,那么该字段也是varchar
我在这里犯的错误是什么?如何修复相同的错误?它是四舍五入的。您看到的是SQL Server的
浮点值的XML文本表示形式
如果您不喜欢,请在四舍五入后将其转换为整数
cast(round([T1].[CIMtrek_CI_Act],0) as int)
它是圆形的。您看到的是SQL Server的浮点值的XML文本表示形式
如果您不喜欢,请在四舍五入后将其转换为整数
cast(round([T1].[CIMtrek_CI_Act],0) as int)
如果有值,它打印时没有任何问题,如果没有,它打印0
0
如果没有值,它不应该出现,如何执行此操作。当[T1].[CIMtrek_CI_Act]=''时的情况下,则“”否则将强制转换(圆形([T1].[CIMtrek_CI Act],0)作为int)作为varchar)结束
感谢它帮助找到并解决了我的问题如果有值它打印没有任何问题如果没有它打印0
0
如果没有值就不应该出现,怎么做。当[T1].[CIMtrek_CI__Act]=''然后''否则强制转换(强制转换(圆形([T1].[CIMtrek_CI_Act],0)as int)as varchar)结束
感谢它帮助我发现并解决了问题