sql 2000关于cast XX as int的问题

declare@idecimal(12,2)set@i=9.87selectcast(@iasint)--结果是截断的:9V.Sdeclare@imoneyset@i=9... declare @i decimal(12,2)
set @i=9.87
select cast(@i as int) --结果是截断的:9
V.S
declare @i money
set @i=9.87
select cast(@i as int) --结果是四舍五入的:10
这是为什么呢?
联机丛书中关于cast的这两段话又该怎么理解,感觉是矛盾的啊?
{
当具有不同小数位数的数据类型进行转换时,值将被截断为最精确的数位。例如,SELECT CAST(10.6496 AS int) 的结果为 10。
转换时,若目标数据类型的小数位数小于源数据类型的小数位数,则要转换的值将被四舍五入。例如,CAST(10.3496847 AS money) 的结果是 $10.3497。
}
展开
 我来答
atwt27
推荐于2016-03-18 · TA获得超过149个赞
知道小有建树答主
回答量:216
采纳率:100%
帮助的人:111万
展开全部
Tsql 中不同的数据类型,转换为int时,所进行的操作是不一样。
numeric → int :截断
money → int :舍入
decimal → int :截断
------------------------------------
其它数据类型之间转换时,也存在这样的情况。
-------------------------------------
怎么感觉我的回答和你问的问题是一样的呢!!!!!!!
追问
谁说不是呢,哎!关键联机丛书上这两句话到底毛线意思,尤其是第一句,怎么叫具有不同小数位数的数据类型进行转换,这太让人费解了…
追答
但是联机丛书上,也给出了,具体转换时的情况呀。
比如是截断,还是舍入。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式