Как извлечь часть перед последним символом @ в письме в postgresql? - PullRequest
0 голосов
/ 02 мая 2018

Пример электронной почты: ex@mpleEm@il@mymail.com

Ожидаемый результат: ex@mpleEm@il

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Возможно, самое простое решение - использовать совпадение регулярного выражения POSIX :

select substring('ex@mpleEm@il@mymail.com' from '(.*)@');

Здесь происходят две слегка тонкие вещи:

  • В соответствии с правилами регулярных выражений POSIX, .* соответствует в максимально возможной степени , поэтому он включает в себя дополнительные @ s (сравните select substring('ex@mpleEm@il@mymail.com' from '(.*?)@');, который имеет "не жадный") модификатор)
  • Функция substring возвращает содержимое первого захвата, если есть какие-либо захватывающие скобки, поэтому не включает заключительный @ (сравните select substring('ex@mpleEm@il@mymail.com' from '.*@');, который не захватывает круглые скобки)
0 голосов
/ 02 мая 2018

Использование substring(string from pattern):

select substring('ex@mpleEm@il@mymail.com' from '(.*)@');

  substring   
--------------
 ex@mpleEm@il
(1 row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...