1つまたは2つのデータベース(nvarchar)列(REMARKSおよびSUPPLEMENTAL_REMARKS)に対してクエリを実行するキーワードの行が0から多数の1つの列を持つテーブル値パラメーター(@KEYWORD)があります。超シンプルなコンセプト。
私が問題を抱えているのは、SQLを記述して、その1つ(または2つ)のデータベース列に対して提供された個々のキーワードのそれぞれをチェックする方法です。
これがWHERE句の未完成部分です...
WHERE
(
CASE WHEN EXISTS (SELECT 1 FROM @KEYWORD) THEN
--check that some combination of either REMARKS or SUPPLEMENTAL_REMARKS contains all supplied values
CASE WHEN (
-- RES.REMARKS (or RES.SUPPLEMENTAL_REMARKS) LIKE %keyword[0]%
-- AND
-- RES.REMARKS (or RES.SUPPLEMENTAL_REMARKS) LIKE %keyword[1]%
-- AND
-- ... (this doesn't work for many reasons, but is just to give an idea)
) THEN
1
ELSE
0
END
ELSE --TVP (@KEYWORD) not supplied, so ignore this filter
1
END
) = 1