日期:2014-05-17  浏览次数:20398 次

问一个sql 字符串 处理的问题
SQL code

/*  这是一组 测试数据

Id   角色

1    业务员
2    业务员
3    业务员
4    业务员
5    业务员,访客
6    业务员
7    业务员
8    业务员

*/

现在有一个  字符串:  '业务经理,访客'

我的问题就是   让 字符串 和 角色列里的 每个数据逐一和这个字符串 比对, 比如:  业务经理 在不在 角色列里面,然后 访客在不在 角色列里面,

然后 找到了   id=5 的 数据 里面有一个 访客数据, 排除这个数据 

得出的结果:
Id   角色

1    业务员
2    业务员
3    业务员
4    业务员
6    业务员
7    业务员
8    业务员

这 就是 我想要的  ,给点 思路就好,




------解决方案--------------------
SQL code
select * from t1 a 
where not exists( 
select 1 from t1 
where CHARINDEX('访客',角色)>0 and CHARINDEX('业务员',角色)>0 
and a.角色=角色)

------解决方案--------------------
SQL code

declare @s varchar(100)
set @s = '业务经理,访客'

set @s = replace(@s,',',''' as t union all select''')
select 'select '''+@s+''''
exec('SELECT 
    a.* 
FROM
    TA a
left join 
    ('+'select '''+@s+''''+') b
on 
     patindex(''%''+b.t+''%'',[角色])>0
where t is null')

------解决方案--------------------
SQL code


create table #t
(
  Id int,[角色] nvarchar(100)
)

insert into #t
select 1,'业务员' union all
select 2,'业务员' union all
select 3,'业务员' union all
select 4,'业务员' union all
select 5,'业务员,访客' union all
select 6,'业务员' union all
select 7,'业务员' union all
select 8,'业务员'

select * from #t where CHARINDEX (',业务经理,',',' +[角色] + ',' )=0 and CHARINDEX (',访客,',',' +[角色] + ',' )=0

Id          角色
----------- ----------------------------------------------------------------
1           业务员
2           业务员
3           业务员
4           业务员
6           业务员
7           业务员
8           业务员