表myTable(id,toWhom), 
其中toWhom字段是varchar,存放员工编号,多员工编号时用逗号分隔, 
怎样写一存储过程myProcedure(@staffId int),使toWhom字段中包含有参数@staffId的记录被获取,不包含@staffId的记录不被获取. 
谢谢,公司OA这个星期就要完工,急死我了!100分不够还可追加.like 没用,当toWhom=1111,1112,1113 时 @staffId=1或@staffId=11或@staffId=111就是同一结果

解决方案 »

  1.   

    select * from myTable where charindex(','+rtrim(@staffId)+',',','+toWhom+',')>0
      

  2.   

    刻意的去构造这样的形式
    toWhom=,1111,1112,1113,
    当@staffId=1时 根据 ,1,去查
    当@1112=1时 根据 ,1112,去查再看看有没有其他的办法
      

  3.   

    --創建測試環境
    Create Table myTable(id Int, toWhom Varchar(100))
    --插入數據
    Insert myTable Select 1, '1,2,3'
    Union All Select 2, '3,10,11'
    Union All Select 3, '111,112,113'
    GO
    --創建存儲過程
    Create ProceDure myProcedure1(@staffId int)
    As
    Select * From myTable Where ',' + toWhom + ',' Like '%,'  + Cast(@staffId As Varchar) + ',%'
    GO
    Create ProceDure myProcedure2(@staffId int)
    As
    Select * From myTable Where CharIndex(',' + Cast(@staffId As Varchar) + ',', ',' + toWhom + ',') > 0
    GO
    --測試
    EXEC myProcedure1 1
    EXEC myProcedure1 11EXEC myProcedure2 1
    EXEC myProcedure2 11
    GO
    --刪除測試環境
    Drop Table myTable
    Drop ProceDure myProcedure1, myProcedure2
    GO
    --結果
    /*
    id toWhom
    1 1,2,3id toWhom
    2 3,10,11
    */
      

  4.   

    create proc myProcedure(@staffId int)
    as
    select * from myTable where charindex( ','+@staffid +',',','+toWhom+',')>0