当前位置: 首页 > article >正文

sql 查询尾差(去尾0后小数点的位数)

最近有需要查询出现在数据库中有尾差的小数,就比如小数位保留2位,正常应该是666.120000,但是计算时有时会出现这样的情况:666.129999或是666.120060,正常应该是需要四舍五入的。
现在要查询出现尾差的小数,写了如下函数,在此记录下:
使用的是SQL Server数据库

--@inValue:小数值
--@length:保留的小数位数
ALTER FUNCTION [dbo].[CheckTailDiff](@inValue DECIMAL(23,10), @length INT)
RETURNS INT
AS
BEGIN

DECLARE @retValue INT
DECLARE @SrcValue VARCHAR(50)
DECLARE @MidValue VARCHAR(20)

--转换小数为字符串
SET @SrcValue=CAST(@inValue AS VARCHAR(20))

IF SUBSTRING(REVERSE(@SrcValue),PATINDEX('%[^0]%',REVERSE(@SrcValue)),1)='.'--小数部分全部为0时
    set @MidValue =''
ELSE
    set @MidValue =LEFT(@SrcValue,LEN(@SrcValue)- PATINDEX('%[^0]%.%',REVERSE(@SrcValue))+1)

SET @retValue=0;
IF @MidValue<>''
BEGIN
	SET @retValue=LEN(@MidValue) - CHARINDEX('.', @MidValue)
END

RETURN @retValue
END

使用如下:

SELECT dbo.CheckTailDiff(77441.1200000060,2)

假如应该是两位小数,如果是77441.1200000000,返回值是2(去尾0的小数位数),表明数据是正常的,没有尾差;

如果是77441.1200000060,返回值是9(去尾0的小数位数),表明数据有尾差;

把这个函数嵌入到查询语句中就可以查询有尾差的值了。


http://www.kler.cn/a/474137.html

相关文章:

  • 超完整Docker学习记录,Docker常用命令详解
  • 【算法】算法大纲
  • 全新免押租赁系统打造便捷安全的租赁体验
  • Eclipse配置Tomcat服务器(最全图文详解)
  • IOS开发如何从入门进阶到高级
  • Ubuntu18.04离线安装audit
  • maven如何从外部导包
  • liunx后台运行jar包
  • 2025 西电软工数据结构机考 Tip (By Felix)
  • npm run 运行项目报错:Cannot resolve the ‘pnmp‘ package manager
  • Centos7使用yum工具出现 Could not resolve host: mirrorlist.centos.org
  • 高级 SQL 技巧:提升数据查询与分析能力
  • 202305 青少年软件编程等级考试C/C++ 一级真题答案及解析(电子学会)
  • 消息队列架构、选型、专有名词解释
  • 更改Endnote在word中的字体输出样式、段落格式问题等
  • git自用指南
  • 比较procfs 、 sysctl和Netlink
  • 202312 青少年软件编程等级考试C/C++ 一级真题答案及解析(电子学会)
  • 免费网站源码下载指南:如何安全获取并降低开发成本
  • QoS质量配置
  • R语言统计分析——Logistic回归
  • 网络安全-web渗透环境搭建-BWAPP(基础篇)
  • Linux双端口服务器:端口1的文件系统目录挂载到端口2
  • 基于物联网技术的电动车防盗系统设计(论文+源码)
  • stm32u5串口点灯
  • deepin 技术双周报丨 deepin 25 集中 bug 修复、启动 x86 更多设备适配...