欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么在select语句里执行一个公式呢

更新时间: 2014-01-05 02:17:30 责任编辑: Author_N1

 

怎样在select语句里执行一个公式呢
写了一个函数,函数返回的结果是一个公式,如下:
select [dbo].[f_Da]('0.5*[100.000]','+','3')
执行后得出结果为:
0.5*(100.000+3.000)

但是执行select后我想得到的结果为公式计算后的值,应该为:51.5

当我这样去执行报错:
select [dbo].[f_Da]('0.5*[100.000]','+','3')+5
消息 245,级别 16,状态 1,第 1 行
在将 nvarchar 值 '0.5*(100.000+3.000)' 转换成数据类型 int 时失败。


--参考方法--

-- 建函数
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)
*/
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:30
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8075/
本文WWW.DOC100.NET DOC100.NET版权所有。