SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER function [dbo].[f_split](@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@SourceSql) while @i>=1 begin insert @temp values(left(@SourceSql,@i-1)) set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i) set @i=charindex(@StrSeprate,@SourceSql) end if @SourceSql<>'\' insert @temp values(@SourceSql) return end
調用 dbo.f_split(@userIdStr,',') ui
@userIdStr=1235123,235123623,123341235,234345234,2346424spa
第二個參數爲你所按照某字符分割code
最後返回一個表類型 table;xml
把查出來的表一個單列轉換成字符串用,隔開。return=1235123,235123623,123341235,234345234,2346424blog
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[f_GetUserIdStr] ( @userId dbo.UserIdInfo READONLY ) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @uidStr NVARCHAR(4000) SET @uidStr =STUFF((SELECT ','+CAST(UserId AS NVARCHAR(1024)) FROM @userId for xml path('')),1,1,'') RETURN @uidStr END
調用 SET @uisStr=dbo.f_GetUserIdStr(@userIdInfo)字符串
最後返回字符串;string
這裏的參數是一個自定義的表,dbo.UserIdInfo。it
能夠自定義一個表,用於變量做爲參數。io
DROP TYPE [dbo].[UserIdInfo] GO CREATE TYPE [dbo].[UserIdInfo] AS TABLE( [UserId] [BIGINT] NULL, [NickName] [NVARCHAR](100) NULL ) GO
和正常建立表差很少。table