sql 为数字加千分位

原文地址:http://topic.csdn.net/u/20100317/15/04f1bf02-48be-4567-be7f-22c0ec5d2df9.html 13#,16#

 

 


create function dbo.GetFormatString(@dec decimal(28,15), @n int)
returns nvarchar(32) as
BEGIN
--原理,用parsename切成整数部分和小数部分(去除最后的0)
--用convert转money,自动带千分位
declare @re nvarchar(32)
declare @a nvarchar(32),@b nvarchar(32)

select @dec=round(@dec, case when @n<0 then 0 when @n=0 then 15 else @n end)
select @a=case when parsename(rtrim(@dec),2)='' then '0' else parsename(rtrim(@dec),2) end,
@b=parsename(rtrim(@dec),1)

select @a= parsename(convert(nvarchar(32), convert(money,@a),1),2)

select @b= stuff(reverse(@b),1,case when patindex('%[1-9]%',reverse(@b))>1 then patindex('%[1-9]%',reverse(@b))-1 else len(@b) end ,'' ) 

 

--小数部分加千分位
--select @b=reverse( parsename(convert(nvarchar(32), convert(money,@b),1),2))
--if @b='0' and @n>0
-- set @b=left('000,000,000,000,000', @n+(@n-1)/3)


--小数部分不加千分位
select @b=reverse(@b)
if @b='0' and @n>0
set @b=left('000000000000000', @n)

select @re= case when @n>=0 then @a+'.'+@b else @a end

if @b='0' and @n=0
set @re=@a

return @re
END

转载于:https://www.cnblogs.com/black263/archive/2012/03/08/2385249.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值