2015-05-13 3 views
0

Значения хранятся в varchar. Я пытаюсь проверить, являются ли значения числовыми, а затем преобразовать в десятичные, если нет, то вернуть исходное значение. Первый случай сам работа хорошо, если я прокомментирую вторую часть.второй случай Ошибка преобразования типа данных varchar в числовой

CASE WHEN ISNUMERIC(Num) = 1 THEN CONVERT(DECIMAL(7,2),CONVERT(FLOAT, Num)) 
    WHEN ISNUMERIC(Num) = 0 THEN Num END, 
+1

Результатом этого выражения 'CASE' могут быть разные типы данных, которые не могут быть – Lamak

+0

не первый возвращает ошибку на' isnumeri'? – xQbert

+0

К xQbert, я случайно удаляю c ... – user1804925

ответ

1

Проблема в том, что вы возвращаете разные типы. Для безопасного запроса вам нужно преобразовать возвращаемые значения в один и тот же тип. Либо преобразовать десятичную дробь в varchar, либо вернуть 0, когда num не является числом.

Смежные вопросы