日期:2014-05-17 浏览次数:20661 次
-- 建函数
create function [dbo].[f_Discount]
(@aa nvarchar(100),@f nvarchar(10),@i decimal(20,3))
returns nvarchar(4000)
as
begin
declare @aa2 nvarchar(100),@y decimal(20,2),@s nvarchar(4000),@tsql nvarchar(4000)
if charindex('+',@aa)>0
set @aa2=SUBSTRING(@aa,1,charindex('+',@aa)-1)+@f+rtrim(@i)+'+' + right(@aa,len(@aa)-charindex('+',@aa))
else
set @aa2=@aa
set @s=replace(replace(@aa2,']',@f+rtrim(@i)+')'),'[','(')
return @s
end
-- 测试
declare @tsql nvarchar(4000),@x nvarchar(4000)
select @x=dbo.[f_Discount]('0.5*[100.000]','+','3')
select @tsql=N'select '+@x+' ''result'' '
exec(@tsql)
/*
result
---------------------------------------
51.5000
(1 row(s) affected)
*/