我在下面的项目上遇到错误,我不明白为什么。任何人都可以为我阐述一些启示吗?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