将varchar值'%'转换为数据类型int时转换失败

时间:2015-12-16 12:14:02

标签: sql sql-server

我创建了一个程序并收到了此消息

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

create procedure consultarEquipo (@id varchar(10), @marca varchar(20),
@year int, @factura varchar(50), @poliza varchar(30))
as begin

select * from C_EQUIPOS
where (ID_EQUIPO like '%'+@id+'%' and
MARCA like '%'+@marca+'%' and
YEAR like '%'+@year+'%' and
FACTURA like '%'+@factura+'%' and
SEGURO like '%'+@poliza+'%')

end
go

我不知道它可能是什么,但当我将程序更改为此时:

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的新手,所以任何帮助都会受到赞赏,也许有更好的方法来做我想做的事情?

1 个答案:

答案 0 :(得分:2)

这是where子句:

YEAR like '%'+@year+'%' and

@year是一个整数。因此,您需要将其转换为字符串:

YEAR like '%'+ cast(@year as varchar(255)) + '%' and

为什么您将like用于名为YEAR的列是可疑的。也许你只是想要:

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