There is another solution if you are on SQL2K. You can use a table-valued user-defined function. I have adapted the sp_parsearray...create function ufn_ParseArray( @array varchar(8000), @separator varchar(10)) RETURNS @Parsed TABLE( ArrayID INT IDENTITY(1,1), Value VARCHAR(1000))ASBEGINDECLARE @separator_position INTDECLARE @array_value VARCHAR(1000) -- this holds each array value as it is returned--Special caseIF DATALENGTH(ISNULL(@array,'')) = 0BEGIN INSERT INTO @Parsed (Value) VALUES (NULL) RETURNENDSET @array = @array + @separator-- Loop through the string searching for separtor charactersWHILE PATINDEX('%' + @separator + '%' , @array) <> 0 BEGIN SELECT @separator_position = PATINDEX('%' + @separator + '%' , @array) SELECT @array_value = LEFT(@array, @separator_position - 1) INSERT INTO @Parsed (Value) VALUES (@array_value) SELECT @array = STUFF(@array, 1, @separator_position + datalength(@separator)-1, '')ENDRETURNENDGO Once you have that you can join to it as part of your from clause ...declare @search varchar(8000)select @search = 'canada,usa,japan,mexico'select <column_list>from <sometable> a inner join dbo.ufn_parsearray(@search,',') b on a.country like '%' + b.value + '%'
Personally, I like it....<O>