Alter FUNCTION [dbo].[uf_SplitKeywords] ( @DELIMITER VARCHAR(5), @LIST VARCHAR(MAX) ) RETURNS @TABLEOFVALUES TABLE ( ROWID int IDENTITY(1,1), [VALUE] VARCHAR(MAX) ) AS BEGIN Declare @Pos int While LEN(@List) > 0 begin Select @Pos=CHARINDEX(@Delimiter,@List,1) if @Pos>0 begin Insert into @TABLEOFVALUES ([Value]) Values (SubString(@List,1,@Pos -1)) Select @LIST = STUFF(@List,1,@Pos ,'') end else begin Insert into @TABLEOFVALUES ([Value]) Values (@List) Select @LIST ='' end end Return End
プレ>呼び出しあり
Select Distinct b.ArticleID,b.Title,b.Description,b.Details,b.KeyWords from ( Select * from Article a1 CROSS APPLY [dbo].[uf_SplitKeywords](',',keywords) f1 Where a1.ArticleID=3 ) a Join ( Select * from Article a2 CROSS APPLY [dbo].[uf_SplitKeywords](',',keywords) f2 ) b on a.Value=b.Value
プレ>