原帖: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)
查询不出结果来。请大家帮忙看一下是什么原因,多谢!
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)
查询不出结果来。请大家帮忙看一下是什么原因,多谢!
xinyangt(信仰t),刚才在函数里不能建临时表,你看还有什么办法?
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)+',%'
这个上面已经说了,不准确.
上面那个我试试...
如果@EmployeeID='1,12,17,'
那结果里面ID是2和7的也将被查询出来。
结果里面ID是7的也将被查询出来了。
select EmployeeID from Employee where ',' + @EmployeeID + ',' like '%' + cast(EmployeeID as varchar) + ',%'
这样就行了。上面几个里面的逗号都加少了
SELECT EmployeeID FROM Employee WHERE @EmployeeID LIKE '%,' + CAST(EmployeeID AS varchar) + ',%'
现在只能查出来11和17,1的查不到了。
where ','+@employeeid+',' like '%,'+cast(id as varchar)+',%'
','+@employeeid+',' 是保证第一个和最后一个元素也被前后两个逗号包围。
'%,'+cast(id as varchar)+',%'这样保证每个元素不进行半截子匹配