#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;