You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS SQL Server中如何检查Decimal(10,6)列千分位及后小数位非0?

在MS SQL Server中检查Decimal(10,6)列的千分位及之后小数位是否非零

方法一:数学运算(推荐)

通过数值计算直接判断千分位之后的小数部分是否大于0,精度可靠,无字符串格式风险:

SELECT *
FROM YourTable
WHERE YourDecimalCol * 1000 - FLOOR(YourDecimalCol * 1000) > 0;

原理:将数值乘以1000后,FLOOR()会提取到千分位为止的整数部分,两者的差值就是原数值千分位之后的小数部分。若差值大于0,说明千分位及之后存在非零数字。

方法二:字符串处理

将数值格式化为固定6位小数的字符串,截取小数点后第3到第6位的内容,判断是否不全为0:

SELECT *
FROM YourTable
WHERE SUBSTRING(STR(YourDecimalCol, 16, 6), CHARINDEX('.', STR(YourDecimalCol, 16, 6)) + 3, 3) != '000';

原理:STR(YourDecimalCol, 16, 6)确保数值被格式化为包含6位小数的字符串,通过CHARINDEX定位小数点位置,截取其后第3位开始的3个字符(对应原数值的千分位、万分位、十万分位),若这部分不是000则说明存在非零数字。

验证示例

  • 1.123456:差值为0.456>0,匹配查询
  • 1.120000:差值为0,不匹配查询
  • 1.000000:差值为0,不匹配查询
  • 1.000001:差值为0.001>0,匹配查询

内容的提问来源于stack exchange,提问作者Matt Ward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:36:16