我有一个下面的转换错误将varchar值“2016十月”转换为 int数据类型时SQL:错误转换VARCHAR到int
转换失败。
在下面的语句:
declare @month varchar(20) = 'October'
select HolidayName, Holiday
from tblHoliday
where PortfolioID = 2 and DATEPART(Year, Holiday) = case when @month is null then 2016 else convert(varchar,2016) + '-' + @Month end
我在做什么错的,什么是做这样的事情的正确方法?
什么是你想做? – bri
从['case'](https://msdn.microsoft.com/en-us/library/ms181765.aspx)表达式返回的各种值必须都是兼容的数据类型,即相同或相同的隐式转换被支持。不幸的是,你对整数和字符串的选择是不兼容的。请注意'VarChar'的默认长度是'1'。您可能需要指定较大的内容,例如'VARCHAR(4)'。 – HABO