SELECT CASE WHEN ISNUMERIC('1a') =1 THEN 1 ELSE 'A' END
i'am получение этой ошибки !!Sql ISNUMERIC()
Ошибка преобразования при преобразовании значения varchar 'A' в тип данных int.
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN 1 ELSE 'A' END
i'am получение этой ошибки !!Sql ISNUMERIC()
Ошибка преобразования при преобразовании значения varchar 'A' в тип данных int.
вы являетесь жертвой типа данных precedence.Taken из BOL:
Когда оператор объединяет два выражения различных типов данных, правила для приоритета типа данных указывают, что тип данных с более низким приоритетом преобразуется в данные pe с более высоким приоритетом. Если преобразование не поддерживается неявным преобразованием, возвращается ошибка. Если оба выражения операнда имеют один и тот же тип данных, результат операции имеет такой тип данных
Так что в вашем случае CASE является выражением, и когда в этом выражении объединены два или более типа данных, он возвращает данные тип наивысшего приоритета. В вашем случае это INT..Но измените ваш запрос ниже
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN cast(1 as varchar) ELSE 'A' END
SELECT CASE WHEN ISNUMERIC('1a') =1 THEN 1 ELSE 2 END
SELECT CASE WHEN ISNUMERIC('1A') = 1 THEN '1' ELSE 'A' END
ИЛИ
SELECT CASE WHEN ISNUMERIC('1A') =1 THEN '1' ELSE SUBSTRING('1A',2,2) END
Я хочу вернуть значение VARCHAR здесь ..! –
ok Я покажу вам вариант –