В момента се отстранява проблем при изпълнение на тази 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'))
Резултати в следната грешка:
Msg 8114, ниво 16, състояние 5, ред 1
Грешка при преобразуването на типа данни nvarchar в float.
Наистина странното е, че ако променя UPDATE
на 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'))
Ето резултатите:
DataValue
2285260
1205310
Бих искал да използвам TRY_PARSE
или нещо подобно; обаче работим на SQL Server 2008, а не на SQL Server 2012. Някой има ли предложения? TIA.