有一团队表Group,表中有两个字段:Name(记录团队名称),Members(记录用户)如下:
Name               Members
group1        user1 user2 user3
group2        user4 user5 user5 user7
group3        user8
......
(同一用户只会出现在一个团队中)
求一SQL语句:已知用户名找出他所在的团队?
如:user5 所在的团队为 group2

解决方案 »

  1.   

    declare @user as varchar(10)
    set @user = 'user5'select * from [group] where charindex(' ' + @user + ' ' , ' ' + members + ' ') > 0
      

  2.   

    select name
    from Group
    where charindex('user5',members)>0
      

  3.   

    create table tb(Name varchar(10),Members varchar(50))
    insert into tb values('group1', 'user1 user2 user3') 
    insert into tb values('group2', 'user4 user5 user5 user7') 
    insert into tb values('group3', 'user8') 
    godeclare @user as varchar(10)
    set @user = 'user5'select * from tb where charindex(' ' + @user + ' ' , ' ' + members + ' ') > 0drop table tb/*
    Name       Members
    ---------- --------------------------------------------------
    group2     user4 user5 user5 user7(1 行受影响)
    */
      

  4.   

    create table tb(Name varchar(10),Members varchar(50))
    insert into tb values('group1', 'user1 user2 user3') 
    insert into tb values('group2', 'user4 user5 user5 user7') 
    insert into tb values('group3', 'user8') 
    godeclare @user as varchar(10)
    set @user = 'user5'select * from tb where charindex(' ' + @user + ' ' , ' ' + members + ' ') > 0drop table tb/*
    Name       Members
    ---------- --------------------------------------------------
    group2     user4 user5 user5 user7(1 行受影响)
    */
      

  5.   

    create table tb(Name varchar(10),Members varchar(50))
    insert into tb values('group1', 'user1 user2 user3') 
    insert into tb values('group2', 'user4 user5 user5 user7') 
    insert into tb values('group3', 'user8') 
    godeclare @user as varchar(10)
    set @user = 'user5'select * from tb where charindex(@user,members) > 0
    /*
    Name       Members
    ---------- --------------------------------------------------
    group2     user4 user5 user5 user7(1 行受影响)
    */
    select * from tb where ' ' + members + ' ' like '% ' + @user + ' %'
    /*
    Name       Members
    ---------- --------------------------------------------------
    group2     user4 user5 user5 user7(1 行受影响)
    */
    drop table tb
      

  6.   

    如果不加 ' ' + 字段名 + ' '遇到user55,user5*等的,也会提取出来.
      

  7.   

    若不管效率问题可以用LIKE
    select *  from group
    where members like '%user5%'
    这个也可以.
    select *  from group
    where charindex('user5',members)>0
      

  8.   

    select *  from group_memberswhere members like '%user5%'select *  from group_memberswhere charindex('user5',members)>0