我在下面的項目上遇到錯誤,我不明白爲什麼。任何人都可以爲我闡述一些啓示嗎?IN子句中的逗號分隔值case case語句錯誤
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
如果我試圖調用這個函數,那麼它對一個整數,但對varchars不起作用。即PRINT @ dbo.fn_AcMonthOrder(8)將返回1不如預期,但PRINT @ dbo.fn_AcMonthOrder( '月')或打印@ dbo.fn_AcMonthOrder( '八一')返回以下錯誤:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Aug' to data type int.
謝謝你標記數據類型的優先順序 - 我設法設置這個,只是通過搞亂 - 但我會在後面深入研究。 – 2013-05-01 07:53:18