原帖:http://community.csdn.net/Expert/topic/4590/4590229.xml?temp=.7383081刚才请教了大家一个问题,但还是不能达到要求。按“横舟摆渡”说的:
SELECT filed1 FROM Employee WHERE @EmployeeID Like '%'+RTRIM(CAST(EmployeeID as nvarchar(10)))+',%'
这样可以执行,如果@EmployeeID ='1,12,13,17',那查询出来的结果里除包括这四个外,还可能有2,3,7的记录。如果改成这样:
SELECT filed1 FROM Employee WHERE RTRIM(CAST(EmployeeID as nvarchar(10))) IN (@EmployeeID)
查询不出结果来。请大家帮忙看一下是什么原因,多谢!

解决方案 »

  1.   

    大伙来帮帮忙啊
    xinyangt(信仰t),刚才在函数里不能建临时表,你看还有什么办法?
      

  2.   

    declare @employeeid varchar(10)
    set @employeeid='1,12,13,17'
    select id from t1 where patindex('%'+cast(id as varchar)+',%',@employeeid+',')>0
    select id from t1 where @employeeid+',' like '%'+cast(id as varchar)+',%'
      

  3.   

    select id from t1 where @employeeid+',' like '%'+cast(id as varchar)+',%'
    这个上面已经说了,不准确.
    上面那个我试试...
      

  4.   

    注意@employeeid+',' 比主贴里多个小尾巴
      

  5.   

    这两句功能是一样的啊。
    如果@EmployeeID='1,12,17,'
    那结果里面ID是2和7的也将被查询出来。
      

  6.   

    select id from t1 where @employeeid+',' like '%,'+cast(id as varchar)+',%'
      

  7.   

    还是一样,我现在@EmployeeID='1,17,'
    结果里面ID是7的也将被查询出来了。
    select EmployeeID from Employee where ',' + @EmployeeID + ',' like '%' + cast(EmployeeID as varchar) + ',%'
      

  8.   

    select id from t1 where ','+@employeeid+',' like '%,'+cast(id as varchar)+',%'
    这样就行了。上面几个里面的逗号都加少了
      

  9.   

    @EmployeeID='1,11,17,'
    SELECT EmployeeID FROM Employee WHERE @EmployeeID LIKE '%,' + CAST(EmployeeID AS varchar) + ',%'
    现在只能查出来11和17,1的查不到了。
      

  10.   

    你最后写的那个不行
    where ','+@employeeid+',' like '%,'+cast(id as varchar)+',%'
    ','+@employeeid+',' 是保证第一个和最后一个元素也被前后两个逗号包围。
    '%,'+cast(id as varchar)+',%'这样保证每个元素不进行半截子匹配
      

  11.   

    其实 sql还是应该尽量用存储过程 这样层次好些 前台和后台也更独立