sql精确查询逗号隔开的字段

有时候有些数据保存时用逗号隔开的数据,需要检索某个值所对应的数据的时候需要用到下面这种方式:

select * from tablename where charindex(','+'3'+',',','+name+',')>0

还有一种,我没去试过:

--先创建一个函数,用来拆分字段值
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的第一个值关联,以后依次,然后用等号查询你要的值

你可能感兴趣的:(sql)