web-dev-qa-db-ja.com

ストアドプロシージャを使用して、SQL Server 2005で文字列に部分文字列が含まれているかどうかを確認する

私は文字列、@mainString = 'CATCH ME IF YOU CAN'です。 WordのME@mainStringの内側にあるかどうかをチェックしたいです。

SQLで文字列が特定の部分文字列を持っているかどうかをどうやって確認するのですか?

220
NLV

_ charindex _ ()は、より大きい文字列内で部分文字列を検索し、一致の位置を返します。一致が見つからない場合は0を返します。

if CHARINDEX('ME',@mainString) > 0
begin
    --do something
end

編集 またはダニエルの答えから、もしあなたが(単語のサブコンポーネントではなく)単語を見つけたいのなら、あなたのCHARINDEX呼び出しは次のようになるでしょう:

CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')

(発生する可能性のある他の句読点に対する再帰的なREPLACE()呼び出しを追加)

365

述語にはワイルドカードを使用することができます(IF、WHERE、またはONの後)。

@mainstring LIKE '%' + @substring + '%'

またはこの特定のケースでは

' ' + @mainstring + ' ' LIKE '% ME[., ]%'

(Word全体を検索する場合は引用符で囲まれた文字列にスペースを入れ、MEがより大きなWordの一部になる場合はスペースを省いてください).

110
Daniel Quinlan
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'

これはあなたを助けるかもしれません。

3
Hardik