当前位置: 代码迷 >> Sql Server >> 存储过程中用 where in解决方法
  详细解决方案

存储过程中用 where in解决方法

热度:39   发布时间:2016-04-27 19:08:24.0
存储过程中用 where in
使用int类型是
CREATE   Procedure   [dbo].[TEST]
(
@ids   int
)

AS
      SELECT   id,name   FROM   test   WHERE   id   in   (@ids)
return  
Go

exec   TEST   1,2,3
这样不行!


CREATE   Procedure   [dbo].[TEST]
(
@ids   nvarchar(4000)
)

AS
      SELECT   id,name   FROM   test   WHERE   id   in   (cast(@ids   as   int))
return  
GO
exec   Test   '1,3,4 '

也不行!

请教大侠了?

------解决方案--------------------
CREATE Procedure [dbo].[TEST]
(
@ids nvarchar(4000)
)

AS
SELECT id,name FROM test WHERE CharIndex( ', ' + Rtrim(id) + ', ', ', ' + @ids + ', ') > 0
return
GO
exec Test '1,3,4 '

------解决方案--------------------
CREATE Procedure [dbo].[TEST]
(
@ids nvarchar(4000)
)

AS
declare @sql varchar(8000)
set @sql= 'SELECT id,name FROM test WHERE id in ( '[email protected]+ ');
exec(@sql)
return
GO
exec Test '1,3,4 '

------解决方案--------------------
CREATE Procedure [dbo].[TEST]
(
@ids varchar(1000)
)

AS
declare @sql varchar(8000)
select @sql= 'SELECT id,name FROM test WHERE id in ( '[email protected] + ') '
exec(@sql)
return
GO
exec Test '1,3,4 '
---try
  相关解决方案