2011-09-09 8 views
3

文字列の単数形と複数形の両方の文字列をチェックするMySQLの正規表現を実行したいと思います。正規表現の追加/削除対象からの複数化

私は特殊文字と複雑な文法のルールを無視し、単に 's'を追加または削除したいと考えています。

たとえば、ユーザーが「靴」を入力すると、「靴」と「靴」の両方の一致が返されます。逆に、ユーザーが「靴」を入力すると、「靴」と「靴」の両方の一致が返されます。

私は次のように試合の複数のバージョンに対してチェックをオプションすることができています:

WHERE Store.tags RLIKE ('(^|,)+[[:space:]]*shoe(s)*[[:space:]]*(,|$)+') 

Iが正/負の先読みについてアップ読み取りまたはルックの背後にあると私は常に追いかけているように見えるされています私の尾。まあ

+0

http://stackoverflow.com/questions/3088433/sql-plural-singular-searches –

+0

残念ながら、コンマで区切られたタグのリスト内で文字列を一致させる必要があるため、FULLTEXTのマッチングは使用できません。また、私は正規化を使用しません。 – Richard

+4

ああそうだから、リレーショナルデータベースにコンマ区切りのリストを格納するのは悪い考えだ:)ホスト言語(Java、PHPなど)を使って単数形/複数形を事前に計算することを検討したことがありますかより単純な検索式を使用しますか?あなたは単純な 'LIKE'節を使うことさえできます! –

答えて

0

あなたが唯一の要件として、それを簡単に... Sを削除または追加することについて質問している場合...

最後の文字がsの場合だけチェック...はい場合 - >のためにそれを削除します単数、ノーならば、複数の

WHERE (a LIKE '%shoes%' OR a LIKE '%shoe%') 

のための1つを追加それは十分に良いです..としてそれを取得としてダムが、あなただけのためにチェックする必要があります見ます。