/
telnov.ob
/
postgresql-patterns-library
Обзор
Документация
Войти
/
telnov.ob
/
postgresql-patterns-library
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
functions/email_parse.sql
35 строк
1 KB
rin-nas
language sql BEGIN ATOMIC
14 апр 2026, 16:15
14 апр 2026, 16:15
acbbc15
Код
Авторство
О чём код?
create or replace function public.email_parse( email text, username out text, domain out text ) -- парсит email, возвращает record из 2-х элементов: username и domain -- возвращает null, если email невалиден (минимальная проверка синтаксиса) returns record immutable returns null on null input parallel safe language sql set search_path = '' cost 5 begin atomic -- https://en.wikipedia.org/wiki/Email_address select t[1] as username, t[2] as domain from regexp_match(email, '^(.+)@([^@\s]+)$', '') as t where octet_length(email) between 6 and 320 and position('@' in email) > 1 --speed improves and octet_length(t[1]) <= 64 and octet_length(t[2]) <= 255; end; -- TEST do $$ begin --positive assert (select username = '111@222' and domain = 'ya.ru' from public.email_parse('111@222@ya.ru') as t); --negative assert public.email_parse('123@') is null; assert public.email_parse('@123') is null; assert public.email_parse('do@it. com') is null; end; $$;