【发布时间】:2013-08-14 05:19:01
【问题描述】:
我正在尝试使用以下作为选择语句之一运行查询,但我不断收到错误“将数据类型 nvarchar 转换为浮点数时出错”。我一直在将 VBA IIf 语句转换为 CASES,但似乎无法正确转换。 fld2 是 nvarchar(15) 而 fld1 是浮点数据类型。我需要帮助查明引发此错误的原因。
CASE WHEN (IsNumeric([fld2]) = 1) THEN Round(Convert(nvarchar,[fld2]) +
' / ' + Convert(nvarchar,[fld1]),(Len(Convert(nvarchar,[theData])) -
Charindex(Convert(nvarchar, [fld2]),'.'))) ELSE [fld2] END,
【问题讨论】:
-
我相信 CASE 会评估它的所有部分,所以即使
IsNumeric为假并且ELSE部分已执行 - 第一部分仍会尝试计算 -
为什么要将字符串传递给
ROUND()函数? -
使用舍入给出将国际测量值转换为美国测量值的结果
-
ROUND()需要数字类型,但不是字符串;你的除法操作数也是如此。 -
@Cory,所以基本上我可以写'Round([fld1]/[fld2])',因为字段是数字。
标签: sql sql-server-2008 tsql