MySQL 查询有效小数位数大于两位的数据

1.扩大倍数法(该方法有问题)

SQL:

select * from C

where

M*100 - floor(cast(M*100 as char)) > 0;

floor:取出整数部分,该函数使用时注意原字段精度问题,有时取出的整数因为精度问题而变小,这里将floor函数内的值转化为字符串类型,然后再取整;

cast(字段名 as 转换的类型 ):防止精度问题,将字段转化为字符串类型;

把字段值扩大100倍,floor函数取出其整数,若该字段小数位数大于2两位,相减的结果大于0,表示该字段小数位数大于2。

2.截取长度计算法(推荐该方法

SQL:

select * from C

where

length(substr( 0 + CAST((M) AS CHAR),instr(M,'.')+1 ) ) > 2;

substr(str,pos): str,要截取的字符串;pos,从第几个字符开始截取,包含该字符;

cast(字段名 as 转换的类型 )://;

0 + CAST((i.discountAmout) AS CHAR):去掉某字段后面无效的0,0 + char 可以去掉无效0;

INSTR(STR,SUBSTR):在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX),INDEX是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况;

先去掉该字段无效的0,然后截取小数点后的部分,取其长度比较是否大于2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值