2012-04-10 5 views
1

テキストフィールドに近いものを見つける方法はありますか? [email protected]を検索すると[email protected]と表示されますか?MySQL - 近くの一致を見つける

だから、基本的にユーザーがthier自身のメールアドレスを探している、そしてそれは、もともと間違ってデータベースに入力された場合、それは少し

+2

近くの一致が意味することによって異なります。 – liquorvicar

+0

@liquorvicarはい。とにかく、googleのようなものはありません:....... :) –

+1

@MostyMostachoええ、もし私たちだけがGのアルゴリズムを持っていれば...とにかくあなたのlevenshteinリンク+1。それはMySQLで実装されていたかわからなかった – liquorvicar

答えて

7

このような問題をパターンマッチングで解決するのは首の痛みです。

2つの文字列間の距離は、1つの文字列をもう1つの文字列に変換するために必要な操作の最小数です。操作は、1文字の挿入、削除または置換です。

thisをチェックしてください。

+0

これは*完璧な、ありがとう! – BenOfTheNorth

+1

私にもニュース。私はこれが完璧だと感じますが、長い電子メールアドレスでは非常に遅くなります。うまくいけば、これは何度も実行される必要はありません。 –

+1

ちょうどそれをテストし、それは素晴らしい動作しています。これは、ユーザーがメールを受信して​​いないときに手動でメールを再送信する場合にのみ使用されるため、ほとんど実行されません。 – BenOfTheNorth

1

オフいくつかのpattern matchingで起動してみてくださいされた場合、それは潜在的な試合を投げます。

SQLのパターンマッチングでは、(ゼロ文字を含む)の文字 の任意の数を一致させるために、任意の単一 の文字と「%」と一致するために「_」を使用することができます。 MySQLでは、SQLパターンはデフォルトで で大文字と小文字を区別しません。いくつかの例をここに示します。 SQLパターンを使用するときは、 use =または<>しないでください。代わりにLIKEまたはNOT LIKE比較演算子 を使用してください。

+0

これの問題は、私が好きなように使用すると、それはあまりにも緩やかになり、正規表現を使用する場合、それはあまりにもタイトになります。私はルールセットの必要なしに、何かを見つける一般的な何かが必要です – BenOfTheNorth

+0

正規表現は、あなたがそれが欲しいと思ったように特定の、または一般的にすることができます。 'LIKE'キーワードは、途中に欠けている文字や文字の集合を見つけることができます。何かもっと必要なら、正規表現に行きましょう。正規表現の文字列が間違っているだけかもしれません。 –

+0

私はまだ何も使用していない、私はthatsすべてを仮定していた。 @で電子メールアドレスを分割して、前半と後半に別々に行う場合は、 – BenOfTheNorth

関連する問題