在存储过程中,怎么用not in

youxihaha 2003-12-15 08:03:09
比如我想传入这样一个字符串(123,212,32)
然后select * from users where userid not in (123,212,32)
...全文
94 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vileboy 2003-12-15
  • 打赏
  • 举报
回复

declare @krs table (NUM INT)
DECLARE @X VARCHAR(8000)
SET @X='123,212,32,'


WHILE @X<>''
BEGIN
INSERT INTO @KRS (NUM) VALUES (LEFT(@X,(CHARINDEX(',',@X)-1) ) )
SET @X=RIGHT(@X,LEN(@X)-CHARINDEX(',',@X))
END

select * from users where userid not in(select num from @drs)
youngby 2003-12-15
  • 打赏
  • 举报
回复
crate pro myPro
@1 varchar(20),
@2 varchar(20),
@3 varchar(20)
as
exec('select * from users where userid not in ('+@1+','+@2+','+@3+')')
go
txlicenhe 2003-12-15
  • 打赏
  • 举报
回复
测试:
create table t1(a int)
insert t1 values(1)
insert t1 values(2)
insert t1 values(3)
insert t1 values(4)
go

create proc test @s varchar(20)
as
exec('select * from t1 where a not in '+@s)
go
-- 调用
exec test '(1,2)'
a
-----------
3
4

(所影响的行数为 2 行)

j9988 2003-12-15
  • 打赏
  • 举报
回复
有点错
select * from users where charindex(','+rtrim(userid)+',' ,','+@字符串+',')>0
j9988 2003-12-15
  • 打赏
  • 举报
回复
select * from users where charindex(','+rtrim(userid)+',' ,@字符串)>0

OR:

exec('select * from users where userid not in ('+@字符串+')')

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧