sql相除的问题2
发布网友
发布时间:2024-03-08 14:03
我来回答
共5个回答
热心网友
时间:2024-04-01 07:31
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,但在SQL Server2008中一直报错,改成FLOAT就没问题了。
小数点显示4位小数。可以进一步四舍五入,保留两位小数点
SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) 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进行非空判断。
热心网友
时间:2024-04-01 07:31
sqlserver:
select cast(ts_count/bj_count as double) from tb_bian_shangpin ;
select cast(ts_count/bj_count as numeric(10,4) ) from tb_bian_shangpin ;
热心网友
时间:2024-04-01 07:26
int值计算最后结果还是int值,可以将其中一个强制转换为小数
select ts_count/CAST(bj_count AS decimal(10,4) from tb_bian_shangpin
热心网友
时间:2024-04-01 07:24
夜来香叶子发黄怎么办
热心网友
时间:2024-04-01 07:28
解决方法:
先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx
SELECT CAST(field1 AS FLOAT)/field2 FROM TB;
ps.网上搜的资料,写的是double,但在SQL Server2008中一直报错,改成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进行非空判断。