sql 两个字段都是逗号隔开 怎么精确查找某个值
假设一个表tmpdata如下:idwidwname11,2weibo,qq32weibo我想根据wid=2,wname=qq查询出一条数据,正确结果是id=1的数据求教s...
假设一个表 tmpdata 如下:
id wid wname
1 1,2 weibo,qq
3 2 weibo
我想根据 wid=2,wname=qq 查询出一条数据,正确结果是id=1的数据
求教sql 2008 的语句怎么写,拜托了,大师!分暂时没有了,后面我赚了后补上
写错了,是wid=2,wname=weibo,希望查询出来只有ID=3这一条数据。
说的更透彻点就是,逗号分开的索引是对应的,比如ID=1的这数据,wid的1是对应wname的weibo,wid的2是对应wname的qq
--------------------------------------------------------------------------
用等号是有问题的,那我wid=2,wname=qq,where后用等号,岂不是查不到了?用like会又会查出多条 展开
id wid wname
1 1,2 weibo,qq
3 2 weibo
我想根据 wid=2,wname=qq 查询出一条数据,正确结果是id=1的数据
求教sql 2008 的语句怎么写,拜托了,大师!分暂时没有了,后面我赚了后补上
写错了,是wid=2,wname=weibo,希望查询出来只有ID=3这一条数据。
说的更透彻点就是,逗号分开的索引是对应的,比如ID=1的这数据,wid的1是对应wname的weibo,wid的2是对应wname的qq
--------------------------------------------------------------------------
用等号是有问题的,那我wid=2,wname=qq,where后用等号,岂不是查不到了?用like会又会查出多条 展开
2个回答
展开全部
/*
你是这个意思:
wid=1 wname=weibo 查询结果是id=1
wid=2 wname=qq 查询结果是id=1
wid=2 wname=weibo 查询结果是id=3
*/
--先创建一个函数,用来拆分字段值
Create Function f_split1(@SourceSql Varchar(8000),@StrSeprate Varchar(2))
Returns @temp Table(id Int Identity(1,1), col Varchar(100))
As
begin
Declare @ch as Varchar(100)
Set @SourceSql=@SourceSql+@StrSeprate
While(@SourceSql<>'')
Begin
Set @ch=left(@SourceSql,Charindex(@StrSeprate,@SourceSql,1)-1)
Insert @temp(col) Values(@ch)
Set @SourceSql=Stuff(@SourceSql,1,Charindex(@StrSeprate,@SourceSql,1),'')
End
Return
End
Go
--以下是查询代码
Select * From (
Select T.id,A.col As Wid,B.col As WName From T
Cross Apply dbo.f_split1(wid,',') A
Cross Apply dbo.f_split1(wname,',') B
where A.id=B.id) S
Where Wid='2' And WName='qq'
--解释,把字段按逗号拆分后,按自增id关联起来,及wid的第一个值跟wname的第一个值关联,以后依次,然后用等号查询你要的值
你是这个意思:
wid=1 wname=weibo 查询结果是id=1
wid=2 wname=qq 查询结果是id=1
wid=2 wname=weibo 查询结果是id=3
*/
--先创建一个函数,用来拆分字段值
Create Function f_split1(@SourceSql Varchar(8000),@StrSeprate Varchar(2))
Returns @temp Table(id Int Identity(1,1), col Varchar(100))
As
begin
Declare @ch as Varchar(100)
Set @SourceSql=@SourceSql+@StrSeprate
While(@SourceSql<>'')
Begin
Set @ch=left(@SourceSql,Charindex(@StrSeprate,@SourceSql,1)-1)
Insert @temp(col) Values(@ch)
Set @SourceSql=Stuff(@SourceSql,1,Charindex(@StrSeprate,@SourceSql,1),'')
End
Return
End
Go
--以下是查询代码
Select * From (
Select T.id,A.col As Wid,B.col As WName From T
Cross Apply dbo.f_split1(wid,',') A
Cross Apply dbo.f_split1(wname,',') B
where A.id=B.id) S
Where Wid='2' And WName='qq'
--解释,把字段按逗号拆分后,按自增id关联起来,及wid的第一个值跟wname的第一个值关联,以后依次,然后用等号查询你要的值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询