標籤:style blog color io for ar cti div
--數文書處理的幾個常用自訂Sql函數--小數開頭沒有0和末尾多餘0處理CREATE function [dbo].[FormatFloat](@dec decimal(18,10)) returns varchar(30) as begin declare @inValue varchar(30); set @inValue = (CONVERT(decimal(18,10),@dec)); declare @returnValue varchar(30) if(@inValue=‘‘) set @returnValue=‘‘ --空的時候為空白else if (charindex(‘.‘,@inValue) =‘0‘) set @returnValue=@inValue --針對不含小數點的else if ( substring(reverse(@inValue),patindex(‘%[^0]%‘,reverse(@inValue)),1)=‘.‘) set @returnValue =left(@inValue,len(@inValue)-patindex(‘%[^0]%‘,reverse(@inValue))) --針對小數點後全是0的 else set @returnValue =left(@inValue,len(@inValue)- patindex(‘%[^0]%.%‘,reverse(@inValue))+1) --其他任何情形return @returnValue--小數格式轉千分位格式CREATE function [dbo].[FormatFloat3](@dec decimal(18,10)) returns varchar(30) as beginreturn CONVERT(VARCHAR(30),cast(@dec as money),1);end--小數格式轉小數點後兩位的金額格式CREATE function [dbo].[FormatFloat2](@dec decimal(18,10)) returns varchar(30) as beginreturn CONVERT(VARCHAR(30),CAST(@dec as decimal(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