I would diffently do the join. You can either use the XML I provided or a udf. I would prefer the xml though. I dont know how the performance will differ but XML get parsed extremely fast in 2005.
DECLARE @x XML
SET @x = '<i>' + REPLACE( @IDString, ',', '</i><i>') + '</i>'
SELECT *
FROM MyTable a
INNER JOIN
(SELECT x.i.value('.', 'VARCHAR(7)')
FROM @x.nodes('//i') x(i)) b
ON a.ID = b.ID
Additionally, I dont know how you create your delmited string but XML can also do this very, very quickly. See below:
DECLARE @IDString VARCHAR(MAX)
SET @IDString =
(SELECT (ID) + ','
FROM MYTABLE
--WHERE FILTER CAN GO HERE
FOR XML PATH(''))