回答:
CHARINDEX()は、より大きな文字列内の部分文字列を検索し、一致の位置を返します。一致が見つからない場合は0を返します。
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
編集またはdanielsの回答から、単語(単語のサブコンポーネントではなく)を検索する場合、CHARINDEX呼び出しは次のようになります。
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(発生する可能性のある他の句読点の再帰的なREPLACE()呼び出しを追加します
REPLACE
それ自体が呼び出された場合です。「ネスト」とは、関数呼び出しの結果がすぐに別の関数に渡される場合です。
select CHARINDEX('ME' collate Latin1_General_CS_AS,'Home')
しselect CHARINDEX('ME' collate Latin1_General_CI_AS,'Home')
ます。(照合でCS
は、Case Sensitiveの略で、きっとうまくいきますCI
)。
述語(IF、WHEREまたはONの後)でワイルドカードを使用できます。
@mainstring LIKE '%' + @substring + '%'
またはこの特定の場合
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(単語全体を検索する場合は引用符で囲まれた文字列にスペースを入れてください。またはMEがより大きな単語の一部である場合は省略してください)。
N
列がの場合は、すべての文字列定数を前に付けることを忘れないでくださいnvarchar
。そうでなければ、行ごとの変換が行われます)