Не удалось выполнить преобразование при преобразовании varchar в числовой и отображении только числовых значений

#sql

Вопрос:

 select * 
    ,iif (DAYSS>=1, DAYSS, 'Out of Stock') as NEWDA
    from TABLE3
 

произошла ошибка

преобразование типа данных varchar в числовой.

при попытке преобразовать числовое значение в varchar, но это тоже ошибка

 use case when isnumeric (DAYSS) >=0 then CAST(DAYSS as varchar) 
 

Не удалось выполнить преобразование при преобразовании значения varchar ‘7.350000’ в тип данных int.

Комментарии:

1. Отметьте СУБД, которые вы действительно используете. SQL Server и MySQL совершенно разные. Однако ошибка, указывающая на проблему, '7.350000' не является допустимым int значением; целые числа не имеют десятичных знаков.

2. Если это SQL Server, вы, возможно, захотите изучить try_convert

Ответ №1:

Я настоятельно рекомендую case вместо iif() этого , но это та же проблема. Выражение относится к одному значению с одним типом. Если одна ветвь («тогда») представляет собой число, а другая-строку («еще»), то результатом будет число.

Итак, преобразуйте число в строку:

 select t3.*,
       (case when DAYSS >= 1 then cast(DAYSS as varchar(255))
             else 'Out of Stock'
        end) as NEWDA
from TABLE3 t3;