Select * From emp e
Where not exists(
Select item From eFN_split('4,7',',') b where not exists
(
Select item From eFN_split(e.lables,',') a
Where b.item=a.item
)
)
4,7是我所输入的参数, efn_split函数功能是截取字符串为表格,
create function eFN_split(
@string nvarchar(255),--待分割字符串
@separator nvarchar(255)--分割符
)returns @array table(item nvarchar(255))
as
begin
declare @begin int,@end int,@item nvarchar(255)
set @begin = 1
set @end=charindex(@separator,@string,@begin)
while(@end<>0)
begin
set @item = substring(@string,@begin,@end-@begin)
insert into @array(item) values(@item)
set @begin = @end+1
set @end=charindex(@separator,@string,@begin)
end
set @item = substring(@string,@begin,len(@string)+1-@begin)
if (
len(@item)>0)
insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))
return
end
需求是:
一个人有多个标签,标签存储在 lables字段中(多个标签以逗号分隔存储在字段中)
现在想输入多个标签,查询出包含输入标签的人