В настоящее время устраняется проблема, связанная с запуском этого 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'))
Выдает следующую ошибку:
Сообщение 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. У кого-нибудь есть предложения? ТИА.