SQLServer中进行sql除法运算结果为小数时显示0的解决方案
转自:http://blog.sina.com.cn/s/blog_8020e41101019k7t.html
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;
不過因為我要用到百分比,就改成了
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函数用来控制小数位数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2014-04-21 UIActivityIndicatorView的详细使用
2012-04-21 Tomcat 6.0.20数据源配置
2012-04-21 Tomcat 6.0+ SQL Server 2005连接池的配
2012-04-21 阿里巴巴离职DBA 35岁总结的职业生涯
2012-04-21 JSP +Tomcat数据库访问
2009-04-21 asp.net小数点四舍五入的方法