Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f0b4906

Browse files
authored
public. added
1 parent 31037a4 commit f0b4906

File tree

1 file changed

+49
-49
lines changed

1 file changed

+49
-49
lines changed

‎functions/phone_normalize.sql‎

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
create or replace function phone_normalize(
1+
-- TODO add support for https://datatracker.ietf.org/doc/html/rfc3966 (see https://habr.com/ru/post/278345/)
2+
3+
create or replace function public.phone_normalize(
24
country_code int, --код страны в любом формате или NULL
35
area_code text, --код зоны в любом формате или NULL
46
local_number text --локальный номер телефона в любом формате или NULL
@@ -78,7 +80,7 @@ begin
7880
end;
7981
$$;
8082

81-
comment on function phone_normalize(
83+
comment on function public.phone_normalize(
8284
country_code int,
8385
area_code text,
8486
local_number text
@@ -93,7 +95,7 @@ comment on function phone_normalize(
9395
Возвращает null, если строка не является номером телефона (минимальная проверка синтаксиса).
9496
$$;
9597

96-
create or replace function phone_normalize(
98+
create or replace function public.phone_normalize(
9799
country_code text,
98100
area_code text,
99101
local_number text
@@ -106,14 +108,14 @@ create or replace function phone_normalize(
106108
set search_path = ''
107109
as
108110
$$
109-
select phone_normalize(
111+
select public.phone_normalize(
110112
nullif(trim(country_code), '')::int,
111113
area_code,
112114
local_number
113115
)
114116
$$;
115117

116-
create or replace function phone_normalize(
118+
create or replace function public.phone_normalize(
117119
phone text
118120
)
119121
returns text
@@ -131,7 +133,7 @@ $$
131133
between 1/*+*/ + 8 --https://stackoverflow.com/questions/14894899/what-is-the-minimum-length-of-a-valid-international-phone-number
132134
and 1/*+*/ + 15 --https://en.wikipedia.org/wiki/E.164 and https://en.wikipedia.org/wiki/Telephone_numbering_plan)
133135
and phone ~ '^\+\d+$' then phone
134-
else phone_normalize(null, null, phone)
136+
else public.phone_normalize(null, null, phone)
135137
end;
136138
$$;
137139

@@ -140,50 +142,48 @@ $$;
140142
do $$
141143
begin
142144
--positive
143-
assert phone_normalize(' ',null,'+7 (977) 123-45-67') = '+79771234567';
144-
assert phone_normalize(null,null,'+7 (977) 123-45-67') = '+79771234567';
145-
assert phone_normalize(null,null,'+ 7 (977) 123-45-67') = '+79771234567';
146-
assert phone_normalize(null,null,'++ 7 (977) 123-45-67 доб 123 Мария') = '+79771234567';
147-
assert phone_normalize(null,null,'+ 7 (977) 123-45-67 вн. 123') = '+79771234567';
148-
assert phone_normalize(null,null,'+ 7 (977) 123-45-67 моб.') = '+79771234567';
149-
assert phone_normalize(null,null,'8/977/1234567') = '+79771234567';
150-
assert phone_normalize(null,null,'8 (812) 123–45−67') = '+78121234567';
151-
assert phone_normalize(null,null,'моб.т. + 7 (977) 123-45-67 ') = '+79771234567';
152-
assert phone_normalize(null,null,' моб. 8 /977/ 123-45-67/69/70 Мария/Иван ') = '+79771234567';
153-
assert phone_normalize(null,null,' моб. 8 (977) 123-45-67/69 Мария Петровна ') = '+79771234567';
154-
155-
assert phone_normalize(null,null,'8(977)123-45-67 с 12.00 до 22.00') = '+79771234567';
156-
assert phone_normalize(null,null,'8(977)123-45-67 с 9 по 11 ч. строго') = '+79771234567';
157-
158-
assert phone_normalize(null,null,'89771234567') = '+79771234567';
159-
assert phone_normalize(null,null,'(977) 123-45-67') = '+79771234567';
160-
assert phone_normalize(null,'8 977','123 45 67') = '+79771234567';
161-
assert phone_normalize(null,'977','123 45 67') = '+79771234567';
162-
assert phone_normalize(null,'831 66 1-23-45',null) = '+78316612345';
163-
164-
assert phone_normalize('7','','8 977 123 45 67') = '+79771234567';
165-
assert phone_normalize(7,'8 977','123 45 67') = '+79771234567';
166-
assert phone_normalize(8,'7 977','123 45 67') = '+79771234567';
167-
assert phone_normalize(7,'977','1234567') = '+79771234567';
168-
assert phone_normalize(8,null,'8 9771234567') = '+79771234567';
169-
170-
assert phone_normalize('8 977 1234567') = '+79771234567';
171-
assert phone_normalize('+79771234567') = '+79771234567';
172-
assert phone_normalize('677 1234567') = '+76771234567';
173-
assert phone_normalize('+677 1234567') = '+6771234567';
174-
assert phone_normalize('210(-.-)7905(-.-)1234567') = '+21079051234567';
145+
assert public.phone_normalize(' ',null,'+7 (977) 123-45-67') = '+79771234567';
146+
assert public.phone_normalize(null,null,'+7 (977) 123-45-67') = '+79771234567';
147+
assert public.phone_normalize(null,null,'+ 7 (977) 123-45-67') = '+79771234567';
148+
assert public.phone_normalize(null,null,'++ 7 (977) 123-45-67 доб 123 Мария') = '+79771234567';
149+
assert public.phone_normalize(null,null,'+ 7 (977) 123-45-67 вн. 123') = '+79771234567';
150+
assert public.phone_normalize(null,null,'+ 7 (977) 123-45-67 моб.') = '+79771234567';
151+
assert public.phone_normalize(null,null,'8/977/1234567') = '+79771234567';
152+
assert public.phone_normalize(null,null,'8 (812) 123–45−67') = '+78121234567';
153+
assert public.phone_normalize(null,null,'моб.т. + 7 (977) 123-45-67 ') = '+79771234567';
154+
assert public.phone_normalize(null,null,' моб. 8 /977/ 123-45-67/69/70 Мария/Иван ') = '+79771234567';
155+
assert public.phone_normalize(null,null,' моб. 8 (977) 123-45-67/69 Мария Петровна ') = '+79771234567';
156+
157+
assert public.phone_normalize(null,null,'8(977)123-45-67 с 12.00 до 22.00') = '+79771234567';
158+
assert public.phone_normalize(null,null,'8(977)123-45-67 с 9 по 11 ч. строго') = '+79771234567';
159+
160+
assert public.phone_normalize(null,null,'89771234567') = '+79771234567';
161+
assert public.phone_normalize(null,null,'(977) 123-45-67') = '+79771234567';
162+
assert public.phone_normalize(null,'8 977','123 45 67') = '+79771234567';
163+
assert public.phone_normalize(null,'977','123 45 67') = '+79771234567';
164+
assert public.phone_normalize(null,'831 66 1-23-45',null) = '+78316612345';
165+
166+
assert public.phone_normalize('7','','8 977 123 45 67') = '+79771234567';
167+
assert public.phone_normalize(7,'8 977','123 45 67') = '+79771234567';
168+
assert public.phone_normalize(8,'7 977','123 45 67') = '+79771234567';
169+
assert public.phone_normalize(7,'977','1234567') = '+79771234567';
170+
assert public.phone_normalize(8,null,'8 9771234567') = '+79771234567';
171+
172+
assert public.phone_normalize('8 977 1234567') = '+79771234567';
173+
assert public.phone_normalize('+79771234567') = '+79771234567';
174+
assert public.phone_normalize('677 1234567') = '+76771234567';
175+
assert public.phone_normalize('+677 1234567') = '+6771234567';
176+
assert public.phone_normalize('210(-.-)7905(-.-)1234567') = '+21079051234567';
175177

176178
--negative
177-
assert phone_normalize(-1,'977','1234567') is null;
178-
assert phone_normalize(1000,'977','1234567') is null;
179-
assert phone_normalize(null,null,null) is null;
180-
assert phone_normalize(null,null,null) is null;
181-
assert phone_normalize(null,' ',' ') is null;
182-
assert phone_normalize(null,null,' 123456 ') is null;
183-
assert phone_normalize(null,' 123456 ',null) is null;
184-
assert phone_normalize(null,null, '1234567890123456') is null;
185-
assert phone_normalize(null,null, '8x977_1234567') is null;
179+
assert public.phone_normalize(-1,'977','1234567') is null;
180+
assert public.phone_normalize(1000,'977','1234567') is null;
181+
assert public.phone_normalize(null,null,null) is null;
182+
assert public.phone_normalize(null,null,null) is null;
183+
assert public.phone_normalize(null,' ',' ') is null;
184+
assert public.phone_normalize(null,null,' 123456 ') is null;
185+
assert public.phone_normalize(null,' 123456 ',null) is null;
186+
assert public.phone_normalize(null,null, '1234567890123456') is null;
187+
assert public.phone_normalize(null,null, '8x977_1234567') is null;
186188
end;
187189
$$;
188-
189-
-- TODO add support for https://datatracker.ietf.org/doc/html/rfc3966 (see https://habr.com/ru/post/278345/)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /