目前正在解决运行此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.
真奇怪的是,如果我更改UPDATE
to 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.