У меня есть код нижеТип ошибки преобразования данных NVARCHAR плавать в SQL Server 2012
SELECT DISTINCT
S.SCOPE
,convert(nvarchar, getdate(), 112) AS EFFECTIVE_START_TIME
,'99991231' AS EFFECTIVE_END_TIME
,LV.UOM_CODE
,'Gross Price' AS COLUMN_NAME_0
,CONVERT(float,LV2.VALUE_0) * CONVERT(float,LV.VALUE_1) AS VALUE_0
,'Quantity' AS COLUMN_NAME_1
,LV.VALUE_1
FROM
PM_SCOPE S
JOIN
PM_LOOKUP_VALUE LV ON S.SCOPE_ID = LV.SCOPE_ID
JOIN
PM_LOOKUP_DEFINITION LD ON LD.LOOKUP_DEFINITION_ID = LV.LOOKUP_DEFINITION_ID
JOIN
PM_SCOPE S2 ON S2.COMP_PRODUCT = S.COMP_PRODUCT
JOIN
PM_LOOKUP_VALUE LV2 ON LV2.SCOPE_ID = S2.SCOPE_ID
JOIN
PM_LOOKUP_DEFINITION LD2 ON LD2.LOOKUP_DEFINITION_ID = LV2.LOOKUP_DEFINITION_ID
WHERE
LD.LOOKUP_NAME = 'Competitor Bundle Details'
AND LD2.LOOKUP_NAME = 'Competitor Gross Price List'
AND S.GEOGRAPHY = S2.GEOGRAPHY
AND CONVERT(VARCHAR, LV2.UPDATED_AT, 112) > CONVERT(VARCHAR, LV.UPDATED_AT, 112)
Когда я бегу, я получаю эту ошибку
Msg 8114, Level 16, State 5, Строка 1
Ошибка преобразования типа данных nvarchar в float.
Однако, когда я закомментировать строку ниже, она работает
AND CONVERT(VARCHAR, LV2.UPDATED_AT, 112) > CONVERT(VARCHAR, LV.UPDATED_AT, 112)
Я посмотрел на данные и не удалось выяснить причину я вижу эту ошибку.
Я также просмотрел существующие сообщения для этой ошибки, и они, похоже, не помогают мне.
Можете ли вы показать нам некоторые данные? Вы можете найти оскорбительные значения с помощью 'try_convert'. Каков фактический тип данных 'updated_at', я запутался в ошибке, так как это похоже на преобразование' date' в 'varchar', что не должно быть проблемой. Если ошибка не указана в 'CONVERT (float, LV2.VALUE_0)', но она все равно должна быть ошибкой при комментировании последней строки ... – HoneyBadger
Я подозреваю, что проблема может быть больше, чем сравнение - почему вы конвертируете в varchar, прежде чем делать это? –
@HoneyBadger тип данных столбца UPDATED_AT [datetime]. – Tanu