当前位置:首页 > 数据库 > Sqlserver

分享 SqlServer中常用且实用的几个数值处理自定义函数

            --
            数字处理的几个常用自定义Sql函数
            --
            小数开头没有0和末尾多余0处理
            CREATE
            function
            [
            dbo
            ].[FormatFloat](@decdecimal(18,10))
 returnsvarchar(30)
 asbegindeclare@inValuevarchar(30);
 set@inValue= (CONVERT(decimal(18,10),@dec));
 declare@returnValuevarchar(30)
 if(@inValue=‘‘)
    set@returnValue=‘‘--空的时候为空elseif (charindex(.,@inValue) =0)
    set@returnValue=@inValue--针对不含小数点的elseif ( substring(reverse(@inValue),patindex(%[^0]%,reverse(@inValue)),1)=.)
           set@returnValue=left(@inValue,len(@inValue)-patindex(%[^0]%,reverse(@inValue))) --针对小数点后全是0的elseset@returnValue=left(@inValue,len(@inValue)-patindex(%[^0]%.%,reverse(@inValue))+1) --其他任何情形return@returnValue--小数格式转千分位格式CREATEfunction[dbo].[FormatFloat3](@decdecimal(18,10))
 returnsvarchar(30)
 asbeginreturnCONVERT(VARCHAR(30),cast(@decasmoney),1);
end--小数格式转小数点后两位的金额格式CREATEfunction[dbo].[FormatFloat2](@decdecimal(18,10))
 returnsvarchar(30)
 asbeginreturnCONVERT(VARCHAR(30),CAST(@decasdecimal(18,2))) ;
end

--执行效果

SELECT dbo.FormatFloat(1233456.12800)
1233456.128


SELECT dbo.FormatFloat3(1233456.12800)
1,233,456.13


SELECT dbo.FormatFloat2(1233456.12800)
1233456.13

原文:http://www.cnblogs.com/shuangxiu/p/3916226.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐