zoukankan      html  css  js  c++  java
  • SQL Server判断小数位数

    项目中需要写一规则,目的是判断数值的小数位数,可以分为2中情况、

      1.直接以小数点为分界点,小数点后的数据表示小数的位数,此种情况比较简单,直接使用CHARINDEX函数就可以搞定

      其中CHARINDEX的用法自行找API

      语法:select  len(字段名)-CHARINDEX('.',字段名) from 表名

    eg:select len(LDLC)-CHARINDEX('.',LDLC) from t_ld

      2.由于SQL中一般在定义表时,就设定了表中数据的类型以及长度,那么数据不足此长度时,系统会在后面默认加0,那么直接通过方法1查询小数位数就不准确,例如数据库中本来存储的数据为1.23,而在定义表时,定义其长度为3位,虽然认为看数据的时候是1.23,时间上通过len(xxx),其结果为3;还有一种情况就是用户统计小数位数的时候,不想统计末尾的0,也就是数据为1.230时,用户希望其小数位数2,即统计len(1.23)。基于上述需求,其代码如下:

     1 CreateFUNCTION [dbo].[getDecimalLenth]( @Number nvarchar(20))
     2 RETURNS nvarchar(20)
     3 AS 
     4 begin
     5   `WHILE RIGHT(@Number,1) =0 and CHARINDEX('.',@Number)>0 and left(RIGHT(@Number,2),1)<>'.'
     6     BEGIN 
     7       Set @Number=LEFT(@Number,LEN(@Number)-1) 
     8     END
     9     return case when CHARINDEX('.',@Number)>0 and right(@Number,1)<>0 
    10         then len(@Number)-CHARINDEX('.',@Number) 
    11         else 0 end
    12 end
  • 相关阅读:
    网络编程【二】socket(套接字)初识
    网络编程【一】操作系统的发展史
    面向对象【十三】类的魔术方法
    面向对象【十二】包装和授权
    面向对象【十一】类内置的attr属性
    面向对象【十】反射
    openwrt 编译错误
    修改openwrt 终端登录欢迎界面
    openwrt quilt 使用
    openwrt luci 入门介绍
  • 原文地址:https://www.cnblogs.com/dz-boss/p/7826971.html
Copyright © 2011-2022 走看看