首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sql server 2008中的round函数

sql server 2008中的round函数
EN

Stack Overflow用户
提问于 2013-03-01 19:19:58
回答 1查看 7.2K关注 0票数 0

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

代码语言:javascript
运行
复制
  select round([CIMtrek_CI_Act],0) as CI FROM [CIMtrek_SystemTable_DatawareHouse]

其中CIMtrek_CI_Act_33不为null且CIMtrek_CIMtrekUniqueID = 1917

而reulst是

代码语言:javascript
运行
复制
CI
1

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

代码语言:javascript
运行
复制
(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')

结果是

代码语言:javascript
运行
复制
<Root>
  <Record>
    <CIMtrek_CIMtrekUniqueID>1917</CIMtrek_CIMtrekUniqueID>
    <CIMtrek_CI_Act>1.000000000000000e+000</CIMtrek_CI_Act>
  </Record>
</Root>

值不是四舍五入的。

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

我在这里犯了什么错误?如何改正?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-01 19:24:42

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

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

代码语言:javascript
运行
复制
cast(round([T1].[CIMtrek_CI_Act],0) as int)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15156466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档