CREATEfunction[dbo].[SplitStr] ( @SourceSqlvarchar(8000), @StrSepratevarchar(100)) returns@temptable(F1 varchar(100) ) as begin declare@chasvarchar(100) set@SourceSql=@SourceSql+@StrSeprate while(@SourceSql<>'') begin set@ch=left(@SourceSql,charindex(',',@SourceSql,1)-1) insert@tempvalues(@ch) set@SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'') end return end
应用(存储过程):
CREATEPROCEDURE[dbo].[UP_Student_GetListByStatus] @StatusListvarchar(max) AS SELECT[Student].* FROM Student WHERE [Student].[PK_Status]IN (SELECT F1 FROM dbo.SplitStr(@StatusList,','))