私は文字列、@mainString = 'CATCH ME IF YOU CAN'
です。 WordのME
が@mainString
の内側にあるかどうかをチェックしたいです。
SQLで文字列が特定の部分文字列を持っているかどうかをどうやって確認するのですか?
_ charindex _ ()は、より大きい文字列内で部分文字列を検索し、一致の位置を返します。一致が見つからない場合は0を返します。
if CHARINDEX('ME',@mainString) > 0
begin
--do something
end
編集 またはダニエルの答えから、もしあなたが(単語のサブコンポーネントではなく)単語を見つけたいのなら、あなたのCHARINDEX呼び出しは次のようになるでしょう:
CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')
(発生する可能性のある他の句読点に対する再帰的なREPLACE()呼び出しを追加)
述語にはワイルドカードを使用することができます(IF、WHERE、またはONの後)。
@mainstring LIKE '%' + @substring + '%'
またはこの特定のケースでは
' ' + @mainstring + ' ' LIKE '% ME[., ]%'
(Word全体を検索する場合は引用符で囲まれた文字列にスペースを入れ、MEがより大きなWordの一部になる場合はスペースを省いてください).
DECLARE @str VARCHAR(255)
SET @str = 'this is @n $tring'
IF (@str LIKE '%[^a-zA-Z0-9]%')
PRINT 'have some ''special'' characters'
ELSE
PRINT 'have not ''special'' characters'
これはあなたを助けるかもしれません。