--1.可以直接删除,不用分解declare @str varchar(1000)
set @str='group1^group2^group3^group4'
delete from 用户表 where charindex('^'+组名+'^','^'+@str+'^')>0
set @str='group1^group2^group3^group4'
delete from 用户表 where charindex('^'+组名+'^','^'+@str+'^')>0
e.g:group1^group2^group3^group4->group1^group2^group4 = 删除用户组group3
...
drop function [dbo].[f_split]
GOif exists (select * from dbo.sysobjects where id = object_id(N'[序数表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [序数表]
GO--为了效率,所以要一个辅助表配合
select top 8000 id=identity(int,1,1) into 序数表
from syscolumns a,syscolumns b
alter table 序数表 add constraint pk_id_序数表 primary key(id)
go/*--字符串分函数 分拆指定分隔符的的字符串,返回结果表--邹建 2004-4--*/
create function f_split(
@str varchar(8000), --要分拆的字符串
@splitchar varchar(10) --分隔符
)returns table
as
return(
select re=substring(@str,id,charindex(@splitchar,@str+@splitchar,id)-id)
from 序数表
where id<=len(@str)+1 and charindex(@splitchar,@splitchar+@str,id)-id=0
)
go--调用
select * from f_split('asdlkfa,asf as,dd a,','a,')