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)


请问如何实现???
...全文
78 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
喜-喜 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
  • 打赏
  • 举报
回复
学习 看看

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧