我在MSSQL Server上有这个示例表
CREATE TABLE tbl (
value FLOAT,
formula NVARCHAR(50)
);
INSERT INTO tbl VALUES ('45.6452','/0.055');
现在我想选择包含2列
结果的表格select <computation> as Result from tbl
生成我想要的结果的正确查询是什么?
尝试&#34;计算&#34;和&#34; Compute By&#34;但它不适用
注意:我不允许更改表的架构,因为我所做的就是生成一个包含上述2列结果的报告
答案 0 :(得分:3)
您可以尝试使用CASE WHEN
子句,但是事先应该知道计算(并且SQL服务器也应该支持):
select case left(formula,1)
when '/' then value / convert(float,stuff(formula,1,1,''))
when '*' then value * convert(float,stuff(formula,1,1,''))
when '+' then value + convert(float,stuff(formula,1,1,''))
when '-' then value - convert(float,stuff(formula,1,1,''))
when '%' then value % convert(float,stuff(formula,1,1,''))
end as Result
from tbl
答案 1 :(得分:2)
您可以尝试使用此查询
DECLARE @query VARCHAR(1000)
SET @query = ''
SELECT @query = @query + ' SELECT ' + CONVERT(VARCHAR,value) + formula + ' as [RESULT]' FROM xtbl
EXEC(@query)
答案 2 :(得分:0)
为什么不连接(值,公式)然后作为SQL执行?
示例SQL Server:
declare @left float = 45.6452;
declare @right NVARCHAR(50) = '/0.055';
declare @sql varchar(50) ;
set @sql = 'select ' + cast(@left as varchar) + @right
exec(@sql)
结果:
829.91272727
答案 3 :(得分:0)
尝试将值一起添加为字符,然后使用动态SQL执行语句:
DECLARE @sql nvarchar(max)
SELECT @sql= 'SELECT '+ CAST(value AS NVARCHAR(20)) + formula
FROM tbl
EXEC sp_executesql @sql