Base on the SQL comment below you only want records from res where all the keyword match on either REMARKS or SUPPLEMENTAL_REMARKS.
-- REMARKS (or SUPPLEMENTAL_REMARKS) LIKE %keyword[0]%
-- AND
-- REMARKS (or SUPPLEMENTAL_REMARKS) LIKE %keyword[1]%
-- AND
-- ... (this doesn't work for many reasons, but is just to give an idea)
The easiest way to do that is JOIN and do a count and make sure it matches the number of keywords in @KEYWORD
DECLARE @KEYWORDCOUNT as INT
SELECT @KEYWORDCOUNT = COUNT(*) FROM @Keyword
SELECT ID, [REMARKS], [SUPPLEMENTAL_REMARKS]
FROM
res r
INNER JOIN @Keyword k
ON r.REMARKS like '%' + k.keyword + '%'
OR r.SUPPLEMENTAL_REMARKS like '%' + k.keyword + '%'
GROUP BY
ID,[REMARKS], [SUPPLEMENTAL_REMARKS]
HAVING COUNT(ID) = @KEYWORDCOUNT
One way for it into your where is like so
WHERE
@KEYWORDCOUNT = 0
OR
res.id in (SELECT ID
FROM
res r
INNER JOIN @Keyword k
ON r.REMARKS like '%' + k.keyword + '%'
OR r.SUPPLEMENTAL_REMARKS like '%' + k.keyword + '%'
GROUP BY
ID
HAVING COUNT(ID) = @KEYWORDCOUNT)
You might want to consider passing @KEYWORDCOUNT in as a parameter since DataTable.Rows.Count almost free