2016-05-20 4 views
-3

У меня есть письмо вроде [email protected].Удалить часть адреса электронной почты

Я хочу выбрать все после @ и до ..

Результат должен быть joebloggs.

+1

Возможно, это странная идея, но не отдельно ли локальная и доменная часть адреса проще, если вы не всегда хотите весь адрес? Я бы назвал одно поле «email_local», а другое «email_domain» – x13

ответ

1

Простой шаблон регулярного выражения должен делать эту работу.

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

SQL Fiddle

Edit: исправлен для поддержки поддоменов. Я предполагаю, что вы хотите получить часть до первой точки.

1

Вот решение с использованием substring и position:

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) - ('@' в col)). – hvd

Смежные вопросы