2016-03-20 10 views
2

MySqlテーブルでテキスト検索を実行していて、特定の文字で終了する可能性のある単語を検索したい。追加の文字が好きなSQL

例を示します。検索は単語clipです。私の質問でclip,またはclip?という単語が見つかりましたが、単語はclippingではありません。

今のところ、これは私が試したものです:

select * from product where title like '%clip%' 

も良くない言葉clippingは、見つけました。

select * from product where title like '% clip %' 

clippingを見つけるだけでなく、そこにカンマは、右のそれの後だclip,、それはまた、私のためによくない時に単語clipを無視しません。

クエリは文字を無視するように指定する方法はあり

、しかし ,または .または ?または基本的に私が選択した任意の他の文字のような文字が含まれていますか?

+0

タイトルは「%clip_」 – Mihai

+0

のようにこれは、クリップの後に何もなく、空白文字で単語を見つけた私は間違いなくねっ含めること。 – Eddy

答えて

3

full text index、その後はmatch...against使用:

... where match(title) against ('clip'); 
+0

私はこのansが好きです。とてもエレガントです。 –

+0

@ Joni私はすでに列にフルテキストインデックスを持っています。構文とのマッチは何でしょうか? – Eddy

+0

私はそれを答えに加えました。 – Joni

2

REGEXPを使用してください。

where title REGEXP '.* clip[,.? ].*' 

次はデモです。あなたは多くのデータを持っているし、自分がこのような検索をたくさんやって見つけた場合、作成するために良いアイデアかもしれ

... where title regexp '[[:<:]]clip[[:>:]]' 

:あなたは単語の境界にマッチする正規表現を使用することができます

mysql> select 'the paper clip is white' REGEXP '.* clip[,.? ].*'; 
+----------------------------------------------------+ 
| 'the paper clip is white' REGEXP '.* clip[,.? ].*' | 
+----------------------------------------------------+ 
|             1 | 
+----------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> select 'the paper clip? is white' REGEXP '.* clip[,.? ].*'; 
+-----------------------------------------------------+ 
| 'the paper clip? is white' REGEXP '.* clip[,.? ].*' | 
+-----------------------------------------------------+ 
|             1 | 
+-----------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> select 'the paper clipping is white' REGEXP '.* clip[,.? ].*'; 
+--------------------------------------------------------+ 
| 'the paper clipping is white' REGEXP '.* clip[,.? ].*' | 
+--------------------------------------------------------+ 
|              0 | 
+--------------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> select 'the paper clipis white' REGEXP '.* clip[,.? ].*'; 
+---------------------------------------------------+ 
| 'the paper clipis white' REGEXP '.* clip[,.? ].*' | 
+---------------------------------------------------+ 
|             0 | 
+---------------------------------------------------+ 
1 row in set (0.00 sec) 
+0

検索語の先頭と末尾の両方にスペースを追加するにはどうすればよいですか? – Eddy

+0

スペースと一致させたいサンプルを用意していますか? –

+0

たとえば、クリップは白です。また、紙の「クリップ」は白です。 – Eddy

関連する問題