带有变量运算符的SQL算法

时间:2013-08-15 16:23:52

标签: sql-server-2008 tsql

我有一个查询生成以下结果,其中fldNum是一个浮点字段,fldOp是一个nvarchar字段,它返回'/'或'*'的值,而fldCalc是varchar字段,它实际上包含数字;当我尝试执行它时它根本不起作用,但我得到一个nvarchar错误浮动转换错误......

                                   ([fldNum] + [fldOp] + Convert(float,[fldCalc]))
example data if fldOp is a '/'     (0.5533/34)

我使用了如下的案例陈述,这很好......

(CASE WHEN [fldOp] = '/' THEN ([fldNum]/Convert(float,[fldCalc])) 
 ELSE ([fldNum]*Convert(float,[fldCalc])) END)

我需要更动态的东西,但是我需要在fldOperator字段中添加+或 - 。无论如何这样做?

1 个答案:

答案 0 :(得分:1)

您可以尝试动态查询。以下为您提供了想法

DECLARE @num1 float
DECLARE @num2 float
DECLARE @op nvarchar
DECLARE @sSql nvarchar(500)

SET @num1 = 0.5533
SET @num2 = 34.0
SET @op = '/'

SET @sSql = 'SELECT ' + CAST(@num1 AS nvarchar(255)) + @op + CAST(@num2 AS nvarchar(255))
EXEC sp_executesql @sSql

取决于您设置的操作员(@op)将是什么操作。 以上结果为0.0162735。