--
数字处理的几个常用自定义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)!