次のクエリをパラメータ化するにはどうすればよいですか? (ちなみに、私は全文索引付きテーブルを使用しているため、CONTAINS()
)
SELECT * FROM Table WHERE CONTAINS(Column, 'cat OR dog')
and ((column NOT LIKE '%[^ cat OR dog]%'));
これはうまくいきませんでした:
DECLARE @term1 VARCHAR(10);
DECLARE @term2 VARCHAR(10);
SET @term1 = 'cat';
SET @term2 = 'dog';
SET @term3 = @term1 + ' ' + 'OR' + ' ' + @term2;
SET @term4 = '[^ @term1 OR @term2 ]' ;
SELECT * FROM table WHERE CONTAINS(column, @term3) <--up to this point works
AND (column NOT LIKE '%[@term4]%'); <--this part doesn't include the second term (@term2)
最後にこれをいじりたい場合は、私の全文インデックス付きテーブルは次のようになります。
animalListID AnimalsList
1 cat dog
2 cat
3 cat dog bird
SELECT
(基本的に、「cat dog」と「cat」を含む行を返し、「cat dog bird」を含まないステートメントのパラメーター化されたバージョンが必要です)
**これは私のデータの非常に単純化されたバージョンですが、問題は私が達成しようとしている概念と完全に一致しています。テーブルには何百万もの行があり、各行には多くの用語があります。