欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何解决在SQL Server中进行除法运算得到小数时显示为0的问题

最编程 2024-01-02 13:46:59
...

SELECT field1/field2 FROM TB;

当 field1的数值 >field2的数值时,除法得出的结果是<1的,即0.xxxxxx

这个时候在DB2的环境下SELECT出来的值是0

解決方法:

先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx

SELECT CAST(field1 AS FLOAT)/field2 FROM TB;

ps.網上搜的資料,寫的是double,但在SQLServer2008中一直報錯,改成FLOAT就沒問題了。

小數點後顯示4位小數。

 

 可以進一步四舍五入,保留两位小数点

SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) FROM TB;

不過因為我要用到百分比,就改成了

SELECT CAST(field1 AS FLOAT)/field2 * 100 FROM TB;

然後再頁面顯示時再加上“%”

 

如果数据列的值为NULL,将其设置为0,那么sql就要这么写

SELECT ROUND(COALESCE(CAST(field1 AS DOUBLE), 0)/field2, 2) FROM TB;

COALESCE这个函数系统的用法如下:

a.输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,”)把NULL转换成”;

b.输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0;

c.输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,”)把NULL转换成”,然后判断函数返回值是否为”;

d.输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。

----------------------------------------------------------------

 

备注:

CAST函数用来类型转换

ROUND函数用来控制小数位数

 

推荐阅读