Для меня ваш вопрос звучит так (хотя, похоже, он вытекает из другого вопроса?):
CREATE FUNCTION fnSCP (@n INT)
RETURNS VARCHAR(20)
AS
BEGIN
RETURN
(
SELECT
CASE
WHEN
@n % 2 <> 0
AND @n % 3 <> 0
AND @n % 5 <> 0
THEN CAST(@n AS varchar(20))
ELSE
CONCAT(
CASE WHEN @n % 2 = 0 THEN 'Snap' END
, CASE WHEN @n % 3 = 0 THEN 'Crackle' END
, CASE WHEN @n % 5 = 0 THEN 'Pop' END
)
END
)
END
Несмотря на то, что вы вернулись varchar(10)
, это заставляет меня думать, может быть, это:
CREATE FUNCTION fnSCP (@n INT)
RETURNS VARCHAR(10) -- ought to be varchar(11); see below
AS
BEGIN
RETURN
(
SELECT
CASE
WHEN @n % 2 = 0 THEN 'Snap'
WHEN @n % 3 = 0 THEN 'Crackle'
WHEN @n % 5 = 0 THEN 'Pop'
ELSE CAST(@n AS VARCHAR(10)) -- ought to be varchar(11); see below
END
)
END
Хотя я только что прочитал, что -2147483648 - это минимальное (максимально отрицательное) значение для типа данных int
, которое не входит в varchar(10)
, поэтому в этом случае оно должно быть varchar(11)
.