/*------函数[fn_StrToTable]:输入字符串返回一个表。【holyrong20080529】-------------------- ------当应用程序中传入的In条件是字符串时,可将该字符串转换为数据集,从而直接作为In条件----- ------(如输入“123,124,234”则返回有三行数据的表,这三行分别为123 124 234)--- ------【输入值】:字符串,用“,”分隔多个字符串------------------------------- ------【返回值】:表,该表只有一列,行数是字符串中逗号隔开的子字符串个数。----***/ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fn_StrToTable]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[fn_StrToTable] GO Create Function fn_StrToTable(@str varchar(1000)) Returns @tableName Table ( columnName varchar(50) ) As Begin set @str = @str+',' Declare @insertStr varchar(50) --截取后的第一个字符串 Declare @newstr varchar(1000) --截取第一个字符串后剩余的字符串 set @insertStr = left(@str,charindex(',',@str)-1) set @newstr = stuff(@str,1,charindex(',',@str),'') Insert @tableName Values(@insertStr) while(len(@newstr)>0) begin set @insertStr = left(@newstr,charindex(',',@newstr)-1) Insert @tableName Values(@insertStr) set @newstr = stuff(@newstr,1,charindex(',',@newstr),'') end Return End