第一步:
(当 field1的数值 > field2的数值时,除法得出的结果是<1的,即0.xxxxxx
这个时候在DB2的环境下SELECT出来的值是0)
解决方法:
第二步:
SELECT field1 /CAST(field2 AS FLOAT) FROM TB;
(先把field2转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx)
(ps:网上搜的资料,写的是double,但在SQL Server2008中一直报错,改成FLOAT就没问题了。)
第三步:
SELECT ROUND(field1/CAST(field2 AS DOUBLE), 2) FROM TB;
(小数点显示4位小数。可以进一步四舍五入,保留两位小数点。)
第四步:
SELECT ROUND(field1/COALESCE(CAST(field2 AS DOUBLE), 0), 2) FROM TB;
(如果数据列的值为NULL,将其设置为0,那么sql就要这么写。注意:除数不能为0)
补充:
COALESCE这个函数系统的用法如下:
a. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter, ” )把NULL转换成 ” ;
b. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter, 0 ),把空转换成 0 ;
c. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter, ” )把NULL转换成 ” ,然后判断函数返回值是否为 ” ;
d. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用 ISNULL 进行非空判断。
举例: