相关疑难解决方法(0)

SQL Server 2008:将数据类型nvarchar转换为float时出错

目前正在解决运行此SQL查询的问题:

UPDATE tblBenchmarkData 
SET OriginalValue = DataValue, OriginalUnitID = DataUnitID, 
    DataValue = CAST(DataValue AS float) * 1.335 
WHERE 
    FieldDataSetID = '6956beeb-a1e7-47f2-96db-0044746ad6d5' 
    AND ZEGCodeID IN 
             (SELECT ZEGCodeID FROM tblZEGCode 
              WHERE(ZEGCode = 'C004') OR 
                   (LEFT(ZEGParentCode, 4) = 'C004'))
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

消息8114,级别16,状态5,行1
错误将数据类型nvarchar转换为float.

真奇怪的是,如果我更改UPDATEto SELECT来检查检索的值是数值:

SELECT DataValue 
FROM tblBenchmarkData 
WHERE FieldDataSetID = '6956beeb-a1e7-47f2-96db-0044746ad6d5' 
AND ZEGCodeID IN 
         (SELECT ZEGCodeID 
          FROM tblZEGCode WHERE(ZEGCode = 'C004') OR 
                               (LEFT(ZEGParentCode, 4) = 'C004'))
Run Code Online (Sandbox Code Playgroud)

结果如下:

DataValue
2285260
1205310
Run Code Online (Sandbox Code Playgroud)

想要使用TRY_PARSE或类似的东西; 但是,我们运行SQL Server 2008而不是SQL Server 2012.有没有人有任何建议?TIA.

floating-point casting nvarchar sql-server-2008

3
推荐指数
1
解决办法
4万
查看次数