--拆分的方法有很多,临时表.SUBSTRING ...但都不如XML来得清凉爽快 declare @tempstr varchar(500) set @tempstr='54,57,55,56,59' declare @Xmlstr xml set @Xmlstr=Co nVERT(xml,'<root><v>' + REPLACE(@tempstr, ',', '</v><v>') + '</v></root>') SELECT ids=N.v.value('.', 'int') FROM @Xmlstr.nodes('/root/v') N(v) --写成函数如下: create FUNCTIo n [dbo].[ufn_sys_Str2Table] ( @SplitStr nvarchar(max), @Separator nvarchar(10) = ',' ) RETURNS @ResultTable TABLE ( [sid] INT IDENTITY(1, 1) , [svalue] nvarchar(max) ) as begin --把字串转成XML declare @Tempxml xml; set @Tempxml=Co nVERT(xml,'<d>'+REPLACE(@SplitStr,@Separator,'</d><d>')+'</d>') --把XML转成表 insert into @ResultTable ([svalue]) select co nvert(nvarchar(max),Tb.co.query('data(.)') ) as rvalue from @Tempxml.nodes('/d') Tb(co) RETURN ; end