Я столкнулся с ошибкой в приведенном ниже пункте, и я не понимаю, почему. Может ли кто-нибудь пролить свет на него для меня?Значение, разделенное запятой SQL в IN, условие case case error
CREATE FUNCTION dbo.fn_AcMonthOrder
(
@Month varchar(100)
)
RETURNS INT
AS
BEGIN
DECLARE @MonthOrder Int
SET @MonthOrder =
(CASE
WHEN @Month IN ('Aug','August',8) THEN 1
WHEN @Month IN ('Sep','September',9) THEN 2
[email protected] IN ('Oct','October',10) THEN 3
...
ELSE 0 END)
RETURN @MonthOrder
END
Если я пытаюсь вызвать эту функцию, то она отлично работает на целое число, но не для типа VARCHAR. То есть PRINT @ dbo.fn_AcMonthOrder (8) возвращает 1, как и ожидалось, но PRINT @ dbo.fn_AcMonthOrder ('Август') Или PRINT @ dbo.fn_AcMonthOrder ('Август') возвращает следующее сообщение об ошибке:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Aug' to data type int.
Спасибо вы за то, что отметили приоритет типа данных - мне удалось установить это, просто возиться, но я буду копаться в этом позже. –