ALTER PROCEDURE [dbo].[Protest]
@spc_id varchar(50)
AS
BEGIN
select * from ProductModelInfo where Spc_Id in (@spc_id)
END
这个存储过程,spc_id是int型,现在我要传的数据是(6,299,224)这样的一个数据,请问在存储过程中怎么声明啊?现在这么写会报数据转换错误。
------解决思路----------------------
ALTER PROCEDURE [dbo].[Protest]
@spc_id varchar(50)
AS
BEGIN
select * from ProductModelInfo where charindex(','+convert(varchar,Spc_Id)+',', ','+@spc_id+',')>0
END
------解决思路----------------------
按照您的思路,这样做可以吗
select * from ProductModelInfo where CHARINDEX(CONVERT(VARCHAR(16),Spc_Id),@spc_id) > 0
------解决思路----------------------
spc_id 是int @spc_id 输入参数为 int 就好了呀
------解决思路----------------------
哦,有逗号,把输入参数 的逗号去掉 转成int
create procedure protest
@spc_id varchar (50)
as
begin
select * from ProductModelInfo
where Spc_Id in( convert (int,replace(@spc_id,',','')))
end
------解决思路----------------------
我也推荐用CHARINDEX方法,为了保证完全匹配,假如@spc_id用的分隔符是逗号
CHARINDEX(','+CONVERT(VARCHAR(100),Spc_Id)+',',','+@spc_id+',') > 0