SELECT distinct dbo.UnitConvert.FExp, Right(FExp,len(FExp)-4)
FROM UnitConvert
--结果
@原单位
@原单位 * 1000 * 1000
@原单位 * 1000 * 1000 * 1000 * 1000
@原单位 / 1000 / 1000
@原单位*1000 *1000
@原单位*12 *12
@原单位*2 *2
@原单位*6 *6
@原单位/1000 /1000
@原单位/1000000 /1000000
@原单位/12 /12
@原单位/2 /2
@原单位/6 /6用500这个数怎么换算
SELECT distinct dbo.UnitConvert.FExp,500 ?? Right(FExp,len(FExp)-4)
FROM UnitConvert
create function f_calc(
@str varchar(1000)--要计算的表达式
)returns sql_variant
as
begin
declare @re sql_variantdeclare @err int,@src varchar(255),@desc varchar(255)
declare @obj intexec @err=sp_oacreate 'MSScriptControl.ScriptControl',@obj out
if @err<>0 goto lb_errexec @err=sp_oasetproperty @obj,'Language','vbscript'
if @err<>0 goto lb_errexec @err=sp_oamethod @obj,'Eval',@re out,@str
if @err=0 return(@re)lb_err:
exec sp_oageterrorinfo NULL, @src out, @desc out
declare @errb varbinary(4),@s varchar(20)
set @errb=cast(@err as varbinary(4))
exec master..sys.fn_varbintohexstr @errb,@s out
return('错误号: '+@s+char(13)+'错误源: '+@src+char(13)+'错误描述: '+@desc)
end
go
create TABLE ta(A INT,OP VARCHAR(1),B INT,C DECIMAL(9,2))
INSERT INTO ta
SELECT 2,'*',25,null UNION ALL
SELECT 2,'+',3,null UNION ALL
SELECT 2,'-',1,null UNION ALL
SELECT 2,'/',1,null
;
update ta
set c =cast( dbo.f_calc(ltrim(a)+op+ltrim(b)) as DECIMAL(9,2))select * from tadrop table ta
drop function f_calc
/*
A OP B C
----------- ---- ----------- ---------------------------------------
2 * 25 50.00
2 + 3 5.00
2 - 1 1.00
2 / 1 2.00(4 行受影响)
*/
cast(ltrim(500)+Right(FExp,len(FExp)-4)as decimal(9,2))
FROM UnitConvert
把
exec master..sys.fn_varbintohexstr @errb,@s out=================>
exec master..xp_varbintohexstr @errb,@s out