SQL Server清除小数点有效数字后的所有0
一、前言
很多企业管理系统,在单据及报表的使用时,都会提供小数点有效数字后0是否显示的功能。在金蝶云星空的BOS平台,这个功能叫"隐藏尾0"。现在假如自己开发一个系统,提供可配置的"隐藏尾0"的功能,该如何实现呢?以下是数据库开发方面的解决方案,仅供参考。
二、方案
方法一、将数据转换为REAL类型
1)代码:
SELECT CAST(1 AS REAL) SELECT CAST(1.000000 AS REAL) SELECT CAST(1.010000 AS REAL)
2)结果:
方法二、通过自定义函数实现
1)代码:
CREATE FUNCTION [dbo].[RC_CLEARZERO](@INVALUE VARCHAR(50)) RETURNS VARCHAR(50) AS BEGIN DECLARE @RETURNVALUE VARCHAR(20) IF (ISNULL(@INVALUE,'')='' OR ISNUMERIC(@INVALUE)=0) --非数字或无效数字 SET @RETURNVALUE='' ELSE IF (CHARINDEX('.',@INVALUE)=0) --不含小数点 SET @RETURNVALUE=@INVALUE ELSE IF (SUBSTRING(REVERSE(@INVALUE),PATINDEX('%[^0]%',REVERSE(@INVALUE)),1)='.') --小数点后全为0 SET @RETURNVALUE=LEFT(@INVALUE,LEN(@INVALUE)-PATINDEX('%[^0]%',REVERSE(@INVALUE))) ELSE SET @RETURNVALUE=LEFT(@INVALUE,LEN(@INVALUE)-PATINDEX('%[^0]%.%',REVERSE(@INVALUE))+1) RETURN @RETURNVALUE END
2)执行:
SELECT [dbo].[RC_CLEARZERO] ('1') SELECT [dbo].[RC_CLEARZERO] ('1.000000') SELECT [dbo].[RC_CLEARZERO] ('1.010000')
3)结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!