2

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

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

我使用了一个 case 语句,如下所示,它工作得很好......

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

我需要一些更动态的东西,但是在我需要在 fldOperator 字段中添加 + 或 - 的情况下。反正有这样做吗?

4

1 回答 1

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 作为结果。

于 2013-08-15T16:34:08.877 回答