首页 新闻 会员 周边 捐助

SQL这个语法多于吗

0
[已解决问题] 解决于 2022-09-07 18:27


为什么要*1.呢?不可以直接/100吗?

景伟·郭的主页 景伟·郭 | 初学一级 | 园豆:154
提问于:2022-08-29 17:14
< >
分享
最佳答案
0

这实际上是一种比较便捷的写法,先看一个例子:

select cast(5/100 as decimal(18,2))

这个执行得到的结果是是 0.00,原因是因为整型计算,所以5/100=0,然后再转换,你再执行下面的例子:

select cast(5*1./100 as decimal(18,2))

这个得到的结果是0.05,原因是先做的5*1.的操作时将值转换为了浮点型,避免了计算精度丢失的问题,是一种常见的利用语言自身机制的取巧写法。

奖励园豆:5
猫探长 | 菜鸟二级 |园豆:325 | 2022-09-06 20:09
其他回答(2)
0

没什么区别

编程非我意 | 园豆:220 (菜鸟二级) | 2022-08-30 17:47
0

有用,当 a.price 为整数时,比如值为100时, 100/100 后 as decimal 会报错。
100.0/100 = 1.0 as decimal 就可以。

在c#中也这样干过,SQL中应该也是类似的作用。

Adming | 园豆:119 (初学一级) | 2022-09-04 13:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册