zoukankan      html  css  js  c++  java
  • MySQL 查询有效小数位数大于两位的值

    昨天碰到一个问题,需要用SQL查询C表中M字段有效小数位数大于两位的值,这个问题一看挺简单的,静下心来想想,其实没有头绪,自己对SQL函数这一块掌握的还是比较少的。
    在网上搜索过程中,找到几个相关的SQL,但是要不不管用,要不就报错,好在了解了相关的解决思路和几个方法,自己写出来了。

    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
    
    金无足赤,人无完人,若有文章什么问题欢迎各位批评指正,共同交流,共同进步。 另,人过留名,雁过留声,少侠觉得还行的话留下个赞吧!:)
  • 相关阅读:
    Redis3.2集群部署安装
    熟悉SQL Server 数据类型
    泛型的参数简介和参数约束
    流(Stream)与文件流(FileStream)
    C#提取双引号中的字符串
    数组,一维数组,二维数组,交错数组
    结构,枚举
    C#中唯一的三元运算符
    位运算
    异常处理语句
  • 原文地址:https://www.cnblogs.com/thePeaceOftheLord/p/13634358.html
Copyright © 2011-2022 走看看