求有交集的列的查询

sky266 2006-09-05 10:40:09
1002001,1002003
1002001
1002001,1002002,1002015
1002001,1002002,1002007
1002001,1002002
1002001,1002002
以上为数据的一列a varchar(50)里面的 每行有自己的id
现在存储过程传进来一个结构如上的字符串 比如@ids=1002001,1002002,1002007 .@ids可以为一个或多个值得逗号连接。
需要查询出 上面的数据里面 所有根 @ids有交集的行。
我的思路是 写一个函数 传进@ids 返回所有行的id逗号隔开的串@rid
然后查询语句调用函数 使用select * from table where id in(函数名(@ids))
但是不知道怎么组织这样的串希望高手指点指点。或者有更好的解决办法请帮忙一下哦
谢谢了。

CREATE function dbo.isHasIntersection(@ids varchar(50),@field varchar(50))
returns varchar(50) as
begin
declare @rid varchar(50)/*返回的行的id*/
set @rid=''
set @ids=@ids+','
while charindex(',',@ids)>0
begin
declare @lid varchar(20) /*临时id*/
declare @tempid varchar(20)/*临时存储的id*/
set @lid=left(@ids,charindex(',',@ids)-1)
/*这里开始不知道怎么写了*/
select @tempid=[id] from table where charindex(@lid,@field)>0
set @rid=@rid+@tempid+','
set @ids=right(@ids,len(@ids)-charindex(',',@ids))
/*上面的@tempid因为有很多行感觉返回的是行的数不是数据*/
set @rid=left(@rid,len(@rid)-1)
end
return @rid
end
...全文
202 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky266 2006-09-05
  • 打赏
  • 举报
回复
用临时表呢,感觉好像可以哦
一层一层山选出来然后返回一张临时表。存储过程中在组合查询应该可以把。
冷箫轻笛 2006-09-05
  • 打赏
  • 举报
回复
我写的不行
再考虑
sky266 2006-09-05
  • 打赏
  • 举报
回复
或者有没有办法
id为5-10
select id from Table where id>5
上面的语句查出来一个串@ids=6,7,8,9,10
sky266 2006-09-05
  • 打赏
  • 举报
回复
有交集的意思就是说。传进来的@ids 里面有1002001 那么以上所有行id都要返回。
如果传进来的@ids=1002002,1002007 里面 那么返回3.4.5.6的id,如果传进来的@ids=1002007
那么只返回 第4行的id。如果@ids=1002007,1002015,1002016 则返回3.4行的id

不知道我说清楚了没有。感谢大家
binnyzhang 2006-09-05
  • 打赏
  • 举报
回复
不知道搂主所要说明的是什么?
/*
需要查询出 上面的数据里面 所有根 @ids有交集的行。
我的思路是 写一个函数 传进@ids 返回所有行的id逗号隔开的串@rid
然后查询语句调用函数 使用select * from table where id in(函数名(@ids))
但是不知道怎么组织这样的串希望高手指点指点。或者有更好的解决办法请帮忙一下哦
*/
对楼主的问题不清楚.
如果以多个道号传入的参数,SQL的where子句能返回吗??
是否搂主要返回的值是传入的ID 行的a列的交集??
冷箫轻笛 2006-09-05
  • 打赏
  • 举报
回复
有交集?
意思是按照楼主给出的数据来看,应该这6条记录都符合条件吧?

这样行不行?

declare @ids varchar(50)
declare @sql varchar(100)
set @ids='1002001,1002002,1002007'
set @sql = 'select * from tablename where id in('+ @ids + ')'

exec(@sql)

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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