22,300
社区成员




declare @s varchar(500)
set @s='(abc*bp*cs)^3'
select dbo.f_power(@s)
--输出
POWER((abc*bp*cs),3)
--写了个存储过程
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
*/
create function f_power (@s varchar(100))
returns varchar(100)
as
begin
set @s = 'power'+'('+replace(@s,'^',',')+')'
return @s
end