DECLARE @Str VARCHAR(1000)
SET @Str='78,89,56,54';WITH Roy
AS
(
SELECT Col=CAST(LEFT(@Str+',',CHARINDEX(',',@Str+',')-1) AS VARCHAR(10)),CAST(STUFF(@Str+',',1,CHARINDEX(',',@Str),'')  AS varchar(100)) AS Split
UNION ALL
SELECT Col=CAST(LEFT(Split,CHARINDEX(',',Split)-1) AS VARCHAR(10)),CAST(STUFF(Split,1,CHARINDEX(',',Split),'') AS VARCHAR(100)) AS SPLIT FROM Roy WHERE Split>'')SELECT * FROM TAB AS a WHERE EXISTS(SELECT 1 FROM Roy WHERE ','+a.tosujects+',' LIKE ','+Col+',')其它方法参照
http://bbs.csdn.net/topics/230087434