スペースで区切られた単語が含まれていると仮定し、次のような単語全体column1
でのみ一致させたいとします。
SELECT * FROM
(select ' ' + REPLACE(column1,' ',' ') + ' ' as column1 from mytable) t
WHERE
column1 like '% word1 %' AND
column1 like '% word2 %' AND
column1 like '% word3 %' AND
REPLACE(REPLACE(REPLACE(column1,
' word1 ',''),
' word2 ',''),
' word3 ','') = ''
この構造では、同じ単語を複数回使用できることに注意してください。それが許されるべきかどうかは、質問からは明らかではありません。(フィドル)
これらの単語が に関連する別のテーブルに別の行として格納されていると、はるかに優れた設計になりmytable
ます。次に、このクエリを満たすために、より通常の SQL を使用できます。あなたの例は、ある種のタグ付けの例のようです。各タグを個別の行 (必要に応じて順序位置も記録) として格納するテーブルを作成すると、これは単純な関係分割の問題になります。
単語が列に表示される回数を数える方法は、次の式です。
(LEN(column2) - LEN(REPLACE(column2,'word',''))/LEN('word')
しかし、これは、単語自体だけでなく、より大きな単語の部分シーケンスの一致にもどります。これ以上の作業は必要ありません。