2011-12-10 32 views
4

でテーブルの列を検索するのは、私は2つのカラムを持つテーブルがあるとしましょう特定の単語

John Bob Smith 
John Bobby Smith 

私の問題は、次のとおりです。

"Bob"という一致する単語が含まれている行のみを返したいと思います。 "Bobby"のような類似の単語を含む行は返さないようにしてください

私が使用して検索:

Select * 
From Table1 
Where FullName like '%bob%' 

は私が間違っている2つの行を取得します。

Select * 
From Table1 
Where FullName = 'Bob' 

これは全く行を返しません。

Select * 
From Table1 
Where FullName like 'Bob' 

これも行を返しません。

私は別のワイルドカードを使用しようとしましたが、何も動作しませんでした。また、CHARINDEXPATINDEXも試しましたが、必要な結果も返しません。

提案がありますか?

ありがとうございました。

答えて

7
SELECT * 
FROM Table1 
WHERE FullName LIKE '%Bob%' 
    AND FullName NOT LIKE '%Bobby%' 

それとも任意のBobbyBobbanBobyBobbie、等...避けるために、意味:

SELECT * 
FROM Table1 
WHERE FullName = 'Bob'    --- just Bob 
    OR FullName LIKE 'Bob %'  --- starts with Bob 
    OR FullName LIKE '% Bob'  --- ends with Bob 
    OR FullName LIKE '% Bob %'  --- middle name Bob 

これは欠場するが、しかしなど'John Bob-George Smith''John Bob. Smith'、との行は、あなたがそのようにしたい場合Albinが提案したように文字列を分割するSQL関数は、より良いアプローチです。

+0

ありがとう、私は正規表現でAlbinの答えを見たが、あなたの答えは私のためにうまくいった。 – AmjadoV

関連する問題