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

SQL如何筛选数值字段第三位小数大于5的记录行

筛选第三位小数大于5的SQL实现方案

现有product表结构及测试数据如下:

productvalue
prodA1.3599
prodB1.6222
prodC1.2566
prodD1.1000

需求为提取第三位小数数值大于5的行(对应示例中的prodA、prodC),可通过以下两种方案实现:

  • 方案1:数值计算法(兼容性最高)
    通过数学运算直接提取第三位小数判断,无需适配不同数据库的通配符规则:
SELECT * FROM product 
WHERE FLOOR(CAST(value AS DECIMAL(10,4)) * 1000) % 10 > 5;

逻辑说明:先将value转成定点数避免浮点精度误差,乘以1000后原本的第三位小数会移动到个位位置,向下取整后对10取模即可得到第三位小数的具体数值,直接判断是否大于5即可,同时会自动过滤小数位数不足3位的记录。

  • 方案2:字符串匹配法
    如果更习惯用通配符/正则匹配,可根据所用数据库选择对应写法:
    • MySQL/SQL Server(支持通配符范围匹配):
    SELECT * FROM product 
    WHERE value LIKE '%.__[6-9]%';
    
    • PostgreSQL(正则匹配):
    SELECT * FROM product 
    WHERE value::text ~ '\.\d{2}[6-9]';
    

两种方案测试后均可正确返回符合要求的记录。

内容的提问来源于stack exchange,提问作者Suporte 03 Ticbox

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:21:02