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,',')
@userIdStr=1235123,235123623,123341235,234345234,2346424
第二個參數為你所按照某字符分割
最后返回一個表類型 table;
把查出來的表一個單列轉換成字符串用,隔開。return=1235123,235123623,123341235,234345234,2346424
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)
最后返回字符串;
這里的參數是一個自定義的表,dbo.UserIdInfo。
可以自定義一個表,用於變量作為參數。
DROP TYPE [dbo].[UserIdInfo] GO CREATE TYPE [dbo].[UserIdInfo] AS TABLE( [UserId] [BIGINT] NULL, [NickName] [NVARCHAR](100) NULL ) GO
和正常創建表差不多。