Sql 转换varchar值时转换失败';%';到数据类型int

Sql 转换varchar值时转换失败';%';到数据类型int,sql,sql-server,Sql,Sql Server,我创建了一个过程并得到了这个消息 将varchar值“%”转换为int数据类型时,转换失败。 我不知道可能是什么,但当我将程序更改为以下内容时: create procedure consultarEquipo (@id varchar(10), @marca varchar(20)) as begin select * from C_EQUIPOS where (ID_EQUIPO like '%'+@id+'%' and MARCA like '%'+@marca+'%') end go

我创建了一个过程并得到了这个消息

将varchar值“%”转换为int数据类型时,转换失败。

我不知道可能是什么,但当我将程序更改为以下内容时:

create procedure consultarEquipo (@id varchar(10), @marca varchar(20))
as begin

select * from C_EQUIPOS
where (ID_EQUIPO like '%'+@id+'%' and
MARCA like '%'+@marca+'%')

end
go

它似乎工作得很好。我是SQL方面的新手,希望您能提供帮助,也许有更好的方法来完成我的任务?

这在
where
子句中:

YEAR like '%'+@year+'%' and
@year
是一个整数。因此,您需要将其转换为字符串:

YEAR like '%'+ cast(@year as varchar(255)) + '%' and
为什么要对名为
YEAR
的列使用
like
,这是可疑的。也许你只是想:

(YEAR = @year or @year IS NULL) and

Year
可能是一个
int
列,因此您不应该尝试直接进行字符串比较。我不确定你想用像“%+@YEAR+'%”这样的
年来完成什么任务。
,我要说的是,这一年是相等的还是不相等的,它不应该部分地等于这个变量。此外,请使用适当的dbms标记您的问题,您可能没有同时使用sql server和mysql。最后,要获得更完整的答案,请发布您的模式和示例数据。
(YEAR = @year or @year IS NULL) and