Я работаю над кодом, который принимает десятичный вывод и преобразует его в сокращенный шестнадцатеричный вывод.Тем не менее, я получаю сообщение об ошибке при попытке преобразовать формат smallint в varchar.Когда я запускаю приведенный ниже код, я получаю сообщение об ошибке
Сообщение 245, Уровень 16, Состояние 1, Строка 1
Ошибка преобразования при преобразовании значения varchar 'E' в тип данных smallint
Я попытался преобразовать оператор SELECT
в:
SELECT
*,
CONVERT(VARCHAR, PCM_ID1)
Но это возвращает то же сообщение об ошибке.Я также изменил код на
...
WHEN PCM_ID1 = '10' THEN CAST('A' AS VARCHAR)
WHEN PCM_ID1 = '11' THEN CAST('B' AS VARCHAR)
WHEN PCM_ID1 = '12' THEN CAST('C' AS VARCHAR)
WHEN PCM_ID1 = '13' THEN CAST('D' AS VARCHAR)
WHEN PCM_ID1 = '14' THEN CAST('E' AS VARCHAR)
WHEN PCM_ID1 = '15' THEN CAST('F' AS VARCHAR)
...
, и это также возвращает то же сообщение об ошибке.Исходный пример кода приведен ниже:
SELECT
*,
FROM
dbo.DMV_All_Tests
CROSS APPLY
(SELECT
CASE
WHEN PCM_ID1 = '0' THEN '0'
WHEN PCM_ID1 = '1' THEN '1'
WHEN PCM_ID1 = '2' THEN '2'
WHEN PCM_ID1 = '3' THEN '3'
WHEN PCM_ID1 = '4' THEN '4'
WHEN PCM_ID1 = '5' THEN '5'
WHEN PCM_ID1 = '6' THEN '6'
WHEN PCM_ID1 = '7' THEN '7'
WHEN PCM_ID1 = '8' THEN '8'
WHEN PCM_ID1 = '9' THEN '9'
WHEN PCM_ID1 = '10' THEN 'A'
WHEN PCM_ID1 = '11' THEN 'B'
WHEN PCM_ID1 = '12' THEN 'C'
WHEN PCM_ID1 = '13' THEN 'D'
WHEN PCM_ID1 = '14' THEN 'E'
WHEN PCM_ID1 = '15' THEN 'F'
WHEN PCM_ID1 = '16' THEN '10'
ELSE PCM_ID1
END AS [PCM ID1 Dec2Hex]) ca
WHERE
KeyDateTime BETWEEN '2018/11/01' AND '2018/12/01'
AND ca.[PCM ID1 Dec2Hex] = '1'
Моя цель - завершить успешное преобразование, чтобы вместо «14», поскольку PCM_ID1 сохранялся в базе данных, он дал бы мне шестнадцатеричный эквивалент, либо«F» или «0F».Это будет использоваться для перекрестной проверки с нашей другой базой данных, которая хранит эти значения PCM_ID1 в шестнадцатеричном виде.