我有一个查询生成以下结果,其中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字段中添加+或 - 。无论如何这样做?
答案 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。