标题:请问,如何查询ID集合的字段?谢谢
只看楼主
mansohu
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2013-3-20
结帖率:21.05%
 问题点数:0 回复次数:2 
请问,如何查询ID集合的字段?谢谢
请问,有这样一个字段:
……                商品ID              ……
        2,5,23,66,777,34,9,87
        55,66,104,4,223
                  2
              ……

也就是该字段里都是商品ID集合(ID号为自然数,无位数限制),没有规律,也没有ID数量限制,可能重复,也可能部分重复,也可能无重复
请问:如果我想查询这个字段里含有某个商品ID或某几个商品ID的记录,SQL应该如何写?谢谢!
搜索更多相关主题的帖子: 自然数 如何 记录 
2014-04-01 16:26
owenlu1981
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:211
专家分:1130
注 册:2013-5-17
得分:0 
这个比较繁琐
1个商品 "1001" => "where [ID] = '1001' or [ID] like '1001'+',%' or [ID] or [ID] like '%,'+ '1001' + ',%' or [ID] like '%,'+ '1001'"
2个商品 "1001","1002" => "where ([ID] = '1001' or [ID] like '1001'+',%' or [ID] or [ID] like '%,'+ '1001' + ',%' or [ID] like '%,'+ '1001') "
                         "and ([ID] = '1002' or [ID] like '1002'+',%' or [ID] or [ID] like '%,'+ '1002' + ',%' or [ID] like '%,'+ '1002')"
......
2014-04-01 22:43
mxbing1984
Rank: 7Rank: 7Rank: 7
来 自:贵州道真
等 级:贵宾
威 望:37
帖 子:73
专家分:342
注 册:2014-8-8
得分:0 
--先建一个字符串拆分的函数
Create Function f_split(@SourceSql varchar(8000),@StrSeprate varchar(100))   
Returns @temp table(col   varchar(100))   
As     
Begin   
  Declare   @ch   as   varchar(100)   
  Set   @SourceSql=@SourceSql+@StrSeprate     
  While(@SourceSql<>'')   
     Begin   
        set   @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)   
        insert   @temp   values(@ch)   
        set   @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')   
     End   
  return   
End   



--查询包含66,223,4的商品ID集合,你可以改成存储过程或函数,然后你就只需要传入参数就可以了
Declare @A varchar(1000)
Set @A='66,223,4'

Select id集合 From
(
    Select id集合,Count(*) As cnt From tab
    Cross Apply dbo.f_split(ID集合,',')
        Where COL in
        (
            Select * From dbo.f_split(@A,',')
        )
        Group By id集合
) S
Where cnt=Len(@A)-Len(Replace(@A,',',''))+1

天再高,踮起脚尖就能更接近阳光
2014-08-08 18:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429521-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.094650 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved