Набор результатов может иметь только один тип, связанный с ним для каждого столбца, вы получите сообщение об ошибке, если первая строка преобразуется в целое число и имеются следующие строки:
Сообщение 245, Уровень 16, Состояние 1, Строка 1
Ошибка преобразования при преобразовании значения nvarchar 'word' в тип данных int.
попробуйте это, чтобы увидеть:
create table testing
(
strangevalue nvarchar(10)
)
insert into testing values (1)
insert into testing values ('word')
select * from testing
select
case
when ISNUMERIC(strangevalue)=1 THEN CONVERT(int,strangevalue)
ELSE strangevalue
END
FROM testing
Лучше всего вернуть два столбца:
select
case
when ISNUMERIC(strangevalue)=1 THEN CONVERT(int,strangevalue)
ELSE NULL
END AS StrangvalueINT
,case
when ISNUMERIC(strangevalue)=1 THEN NULL
ELSE strangevalue
END AS StrangvalueString
FROM testing
или ваше приложение может проверить числовые значения и выполнить специальную обработку.