sqlserver中计算结果保留小数

经常要保留小数,在程序中计算太麻烦了,还要转换操作。直接在数据库中操作来得方便。
把数据类型定义成decimal/numeric类型,小数位看需要随意设,除数与被除数必须要有一个为decimal/numeric中的类型,
如下例:
SELECT 24.0000/38.0000     --0                           
SELECT CAST(24/38 AS NUMERIC(18,4))         --0
SELECT CAST(24/38.0000 AS NUMERIC(18,4))    --0.6316 此结果已经四舍五入
SELECT 24.0000/38.0000     --0.6316

decimal/numeric与int类型运算时会得出decimal/numeric类型的结果,因为decimal/numeric的优先级比int高。

参照MSDN上的类型优先级表:

SQL Server 2005 对数据类型使用以下优先级顺序:

    1. 用户定义数据类型(最高)
    2. sql_variant
    3. xml
    4. datetime
    5. smalldatetime
    6. float
    7. real
    8. decimal
    9. money
    10. smallmoney
    11. bigint
    12. int
    13. smallint
    14. tinyint
    15. bit
    16. ntext
    17. text
    18. image
    19. timestamp
    20. uniqueidentifier
    21. nvarchar(包括 nvarchar(max)
    22. nchar
    23. varchar (包括 varchar(max)
    24. char
    25. varbinary(包括 varbinary(max)
    26. binary(最低)
时间: 2024-10-11 12:40:34

sqlserver中计算结果保留小数的相关文章

java中double变量保留小数问题

(转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点后面位数过长,四舍五入保留指定位数: 可以用以下代码实现: public class TestDemo { public static void main(String[] args) {     double a=15.32743859;     double b=Math.round(a*100

SqlServer中计算列详解

计算列区别于需要我们手动或者程序给予赋值的列,它的值来源于该表中其它列的计算值.比如,一个表中包含有数量列Number与单价列Price,我们就可以创建计算列金额Amount来表示数量*单价的结果值,创建Amount列后,在程序中需要使用计算金额这个值时,就不用取出Number列与Price列的值后相乘,而是直接取Amount列的值就可以了. 那么这个计算列要如何建立呢? 先看通过sql的方法创建: create table table1 ( number decimal(18,4), pric

SQLSERVER中计算某个字段中用分隔符分割的字符的个数

比如字段sid中用'|'分割的一些字符   a|b|c|d,需要通过sql查询出字符的个数是4. 可以使用如下脚本: SELECT LEN(sid)-LEN(REPLACE(sid,'|',''))+1 'NUM1',COUNT(1)'NUM2' FROM dbo.FM_PurchaseRequest WHERE ISNULL(sid,'')<>'' GROUP BY LEN(sid)-LEN(REPLACE(sid,'|',''))+1 ORDER BY 附件个数 DESC 原文地址:htt

html模板中的数字保留两位小数

<script> //html模板中的数字保留两位小数 function formatCurrency(num) { num = num.toString().replace(/\$|\,/g,''); if(isNaN(num)) num = "0"; sign = (num == (num = Math.abs(num))); num = Math.floor(num*100+0.50000000001); cents = num%100; num = Math.flo

Js 和 PHP 中保留小数点后X位数的方法 toFixed、round、number_format、sprintf

在 Javacript 中保留小数点后两位数的方法为 toFixed(2),其中的2为保留两位,写多少就保留多少了,满5进1. Javacript例子: var num = 24.54789523; alert( num.toFixed(2) ); //alert number 24.55 然后在PHP中方法就多了,难怪别人都说PHP是个函数库..选它没错.. $num = 24.54789523; echo number_format($num,2); //24.55 echo number_

我是如何在SQLServer中处理每天四亿三千万记录的(转)

首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. 项目背景 这是给某数据中心做的一个项目,项目难度之大令人发指,这个项目真正的让我感觉到了,商场如战场,而我只是其中的一个小兵,太多的战术,太多的高层之间的较量,太多的内幕了.具体这个项目的情况,我有空再写相关的博文出来. 这个项目是要求做环境监控,我们暂且把受监控的设备称为采集设备,采集设备的属性

(转)我是如何在SQLServer中处理每天四亿三千万记录的

首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. 项目背景 这是给某数据中心做的一个项目,项目难度之大令人发指,这个项目真正的让我感觉到了,商场如战场,而我只是其中的一个小兵,太多的战术,太多的高层之间的较量,太多的内幕了.具体这个项目的情况,我有空再写相关的博文出来. 这个项目是要求做环境监控,我们暂且把受监控的设备称为采集设备,采集设备的属性

SQLServer中间接实现函数索引或者Hash索引

本文出处:http://www.cnblogs.com/wy123/p/6617700.html SQLServer中没有函数索引,在某些场景下查询的时候要根据字段的某一部分做查询或者经过某种计算之后做查询,如果使用函数或者其他方式作用在字段上之后,就会限制到索引的使用,不过我们可以间接地实现类似于函数索引的功能.另外一个就是如果查询字段较大或者字段较多的时候,所建立的索引就显得有点笨重,效率也不高,就需要考虑使用一个较小的"替代性"字段做等价替换,类似于Hash索引,本文粗浅地介绍两

如何在SQLServer中处理每天四亿三千万记录

首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. 项目背景 这是给某数据中心做的一个项目,项目难度之大令人发指,这个项目真正的让我感觉到了,商场如战场,而我只是其中的一个小兵,太多的战术,太多的高层之间的较量,太多的内幕了.具体这个项目的情况,我有空再写相关的博文出来. 这个项目是要求做环境监控,我们暂且把受监控的设备称为采集设备,采集设备的属性