项目中需要写一规则,目的是判断数值的小数位数,可以分为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)。基于上述需求,其代码如下:

CreateFUNCTION [dbo].[getDecimalLenth]( @Number nvarchar(20))
RETURNS nvarchar(20)
AS
begin
  `WHILE RIGHT(@Number,1) =0 and CHARINDEX('.',@Number)>0 and left(RIGHT(@Number,2),1)<>'.'
    BEGIN
      Set @Number=LEFT(@Number,LEN(@Number)-1)
    END
    return case when CHARINDEX('.',@Number)>0 and right(@Number,1)<>0
        then len(@Number)-CHARINDEX('.',@Number)
        else 0 end
end

SQL Server判断小数位数的更多相关文章

  1. SQL Server的小数数值类型(float 和 decimal)用法

    在SQL Server中,小数数值实际上只有两种数据类型:float 和 decimal.double precision 整体是数据类型,等价于 float(53),real等价于float(24) ...

  2. Sql Server 判断表或数据库是否存在

    发布:thebaby   来源:脚本学堂     [大 中 小] 本文详细介绍了,在sql server中判断数据库或表是否存在的方法,有理论有实例,有需要的朋友可以参考下,一定有帮助的.原文地址:h ...

  3. SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数

    -- SQL SERVER 判断是否存在某个触发器.储存过程 -- 判断储存过程,如果存在则删除IF (EXISTS(SELECT * FROM sysobjects WHERE name='proc ...

  4. SQL Server判断是否满足日期格式(YYYYMMDD)以及中文等判断,格式化为YYYY-MM-DD

    SQL Server判断是否满足日期格式(YYYYMMDD)以及中文等判断: 在做sql数据的正确性审核中,需要判断数据是否满足日期格式,网上找不到相关的资料,于是自己花了半天写了一个简单的函数 具体 ...

  5. SQL Server判断某个字段是否包含中文/英文字符/数字

    原文:SQL Server判断某个字段是否包含中文/英文字符/数字 因最近在清理系统中的脏数据,需要查询某个字段是否包含中文/英文字符/数字的数据, 比较简单,仅以此篇博客做一个简单总结,方便以后查阅 ...

  6. SQL SERVER 判断是否存在数据库、表、列、视图

    SQL SERVER 判断是否存在数据库.表.列.视图 --1. 判断数据库是否存在 IF EXISTS (SELECT * FROM SYS.DATABASES WHERE NAME = '数据库名 ...

  7. SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)

    1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’)    drop database [数据库名] ...

  8. SQL Server 判断表中是否存在某字段

    功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].[SCHEMA].SYSCOLUMNS WHERE ID=O ...

  9. Sql Server 判断字符串是否可以转数字

    主要是在sql server的内置系统函数ISNUMERIC的基础上,将例外的“+”.“-”.“$”等也进行判断. CREATE FUNCTION [dbo].[fn_IsNumberic]( @st ...

随机推荐

  1. 【JavaScript运算符与表达式】

    一.表达式 1.原始表达式:2.14,"test",true/false,null--复合表达式:10*20-- 2.数组.对象的初始化表达式:new Array(1,2),[1, ...

  2. java基础,集合,Arraylist,源码解析(基础)

    ArrayList 是什么,定义? 这是动态的数组,它提供了动态的增加和减少元素,实现了List接口(List实现Collection,所以也实现Collection接口)灵活的设置数组的大小等好处 ...

  3. jQuery判断Dom对象是否存在

    我们时常要检测一个DOM对象是否为空. var $jObject = $('#btn'); alert($jObject ); 我们会发现,$jObject 永远不会为空.为什么呢?$ 方法查找对象, ...

  4. 如何让一个DIV水平,垂直方向都居中于浏览器?

    <style type="text/css"><!-- div {position:absolute;top:50%;left:50%;margin:-150px ...

  5. 51nod 1231 记分牌

    链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1231 一个得分合法等价于前k小的得分之和大于等于$\frac{k* ...

  6. UVA 10382 - Watering Grass【贪心+区间覆盖问题+高精度】

    UVa 10382 - Watering Grass n sprinklers are installed in a horizontal strip of grass l meters long a ...

  7. POJ 1163 The Triangle【dp+杨辉三角加强版(递归)】

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 49955   Accepted: 30177 De ...

  8. sscanf()用法

    http://blog.chinaunix.net/uid-26284412-id-3189214.html #include<cstdio> #include<cstring> ...

  9. flume1.8 基础架构介绍(一)

    1. 系统要求 1. Java运行环境 -- Java 1.8及以上 2. 内存 -- 足够的内存供配置的sources,channels 或者sinks使用 3. 硬盘空间 -- 足够的硬盘空间供配 ...

  10. 一 : springmvc常用注解

    springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...