SQL2005字符串问题

pdh05128 2010-10-13 09:15:50
有一字符串如下

declare @s varchar(500)
set @s='(abc*bp*cs)^3'
select dbo.f_power(@s)
--输出
POWER((abc*bp*cs),3)


请问如何实现???
...全文
60 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
喜-喜 2010-10-13
--写了个存储过程
if object_id('p_power') is not null drop proc p_power
go
create proc p_power(@str nvarchar(200))
as
begin
declare @num float
set @str='select power(cast'+replace(@str,'*',' as decimal(18,2))*cast(')
set @str=replace(@str,')^',' as decimal(18,2)),')+') as result'
exec(@str)
end
go

declare @s varchar(500)
set @s='(1.2*3.0*1)^3'
exec p_power @s
/*
result
--------------
46.656000
*/
set @s='(3*2.0*1*2*3.1*1)^3'
exec p_power @s
/*
result
--------------
51478.848000
*/
set @s='(3)^3'
exec p_power @s
/*
result
--------------
27.00
*/
回复
kevn 2010-10-13
[Quote=引用 4 楼 sqlcenter 的回复:]
#3
不是,应该是把公式值计算出来。
思路不外是字符串解析,将参数解析出来计算。
[/Quote]
我说怎么楼上两位竟然没有回答,这样只有帮顶咯
回复
SQLCenter 2010-10-13
#3
不是,应该是把公式值计算出来。
思路不外是字符串解析,将参数解析出来计算。
回复
kevn 2010-10-13
这个意思?

create function f_power (@s varchar(100))
returns varchar(100)
as
begin
set @s = 'power'+'('+replace(@s,'^',',')+')'
return @s
end

回复
SQLCenter 2010-10-13
字符串处理问题
回复
bancxc 2010-10-13
学习 看看
回复
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-13 09:15
社区公告
暂无公告