2016-04-19 15 views
2

フリーフィールドテキストのブロック(メールボックス名はTEXT)から電子メールアドレスを分離しようとしています。MySQLを使用している文字列からメールアドレスを分離する

フリーテキストフィールドに文字を前後のさまざまなバリエーションがすなわち、あります

email me! [email protected] 
e:[email protected] m:555-555-5555 
[email protected] email 

私が最初に"@"(おそらく1つの信頼性の定数を隔離するINSTR()SUBSTRING_INDEX()のバリエーションを試してみました電子メールを見つける...)と左に文字を抽出する(スペースまたは非修飾文字まで"-"または":"のように)、同じことを@に続くテキストで行います。

しかし、私がこれまでに試したことは、必要なレベルまでノイズをフィルタリングしていませんでした。

明らかに100%の精度は可能ではありませんが、私は自分の選択した明細書をどのように構成することができますか?

答えて

1

MySQLでこれを行う簡単な方法はありません。ただし、正規表現を使用して検索した後は、これを簡単に実行できます。ここで

はあなたのケースでそれを使用する方法の例のようになります。Regex example

あなたはそれが1つの文字列からすべての電子メールアドレスを選択する場合:Regex Example

あなたが抽出するのに正規表現を使用することができますMySQLには電子メールが含まれていますが、文字列からグループは抽出されません。これは、それを一致させるために、あなたはSELECTREGEXPを使用することができますされ

SELECT * FROM table 
WHERE column RLIKE '\w*@\w*.\w*' 

RLIKE MySQLの外で行われなければならないが、それは唯一それが一致するか発見したかどうかに1または0を返します。■

もしあなたがMySQLで抽出したいのであれば、この他のstackoverflow postがあなたを助けます。しかし、それはMySQLの外でそれをするのではなく、多くの仕事のように思えます

+0

電子メールの正規表現の検証はそれ自体が悪夢ですhttps://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-電子メールアドレス –

+0

@ElzoValugiああ、私は非常に基本的な正規表現を作った。電子メールには数字と特定の文字も含めることができるからだ。トーマスは、100%の精度を目指すのではなく、おそらく100%の正確さを得ることは不可能なランダムテキストから電子メールアドレスを抽出しようとするのではなく、最初からきれいに入力することをお勧めします – Jester

関連する問題