2017-09-21 12 views
1

ユーザは、検索語句をアプリケーションに入力し、特定のフィールドを検索します。彼らは間違ったマッチを得たくない。すなわち、検索用語が「トランプ」の場合、結果に「トランペット」を見つけたくない。だから私は検索用語の両側にスペースがあることを確認しました。SELECT * FROM TABLE WHERE description〜* 'trump'。それはうまくいきますが、今は文の終わりに結果を見つけることができる、つまりトランプです。私は単に期間を含む検索語を含めることができますが、次に欲しいのは追加の句読点です!つまり、私の質問は、この種の検索を行うためのエレガントな方法ですか、すべての可能性を追加していますOR文を使用する唯一のオプションは?postgresql検索期間からの検索期間からの検索方法

+1

あなたはlikeの代わりにregexを使用する必要があるように思えます。 –

答えて

0

あなたの例では、次のようになります。

WHERE description ~* ' trump[.?! ]' 

あなたには、いくつかの追加の文字を検索したい場合(つまり、@。)ただ括弧の中にそれらを追加します。 ジョーのように、正規表現のパターンマッチングを見たいと思うかもしれません。

+0

あなたが望むなら、検索語の前に同じテクニックを使うことができると仮定して正しいと思いますか?たとえば、文の先頭にあった結果が前のスペースを持たずに検索できるようにしたいのであれば、私はWHERE description〜* '[] trump [。?! ] ' –