2016-05-20 17 views
-3

[email protected]のようなメールがあります。メールアドレスの一部を削除します

私は@の後と.の前にすべてを選択したいと考えています。

結果はjoebloggsである必要があります。ここで

+1

これは奇妙な考えですが、アドレス全体を常に必要としない場合は、アドレスのローカル部分とドメイン部分を別々に保存するのは簡単ではありませんか?私は1つのフィールド 'email_local'と他の 'email_domain'と呼ぶだろう – x13

答えて

1

単純な正規表現パターンは、仕事をする必要があります。

SELECT regexp_matches('[email protected]', '@([^.]+)\.'); 

SQL Fiddle

編集:サブドメインをサポートするために固定。私はあなたが最初の点の前に部品を手に入れたいと思っています。

は'[email protected]( ストリングを選択ストリングとINSTRを使用

1

substringpositionを使用してソリューションです:

substring(col from (position('@' in col)+1) 
       for (
        position('.' in substring(col from (position('@' in col)+1))) - 1 
      ) 
     ) 
+0

@hvd私の更新された答えを確認してください。正規表現がここに行く方法である理由は明らかです。 –

+1

あなたの更新された回答は、合理的に期待できるほどの機能性を備えています。 'for(char_length(col) - position( '@' in col))'を取り除くことによって、単純化することができます。 – hvd

関連する問題