-
Notifications
You must be signed in to change notification settings - Fork 144
/
is_bik.sql
40 lines (35 loc) · 1.02 KB
/
is_bik.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
create or replace function public.is_bik(str text)
returns boolean
immutable
returns null on null input
parallel safe
language sql
set search_path = ''
cost 5
as
$$
select
octet_length(str) = 9
and regexp_match(
str,
--https://ru.wikipedia.org/wiki/Банковский_идентификационный_код
--https://www.consultant.ru/document/cons_doc_LAW_367694/fa4fb7b68518112d6b37e77c1b0bb56b6cca42eb/
$regexp$
^
[012]
\d{8}
$
$regexp$, 'x') is not null
$$;
comment on function public.is_bik(text) is 'Проверяет, что переданная строка является БИК (Банковский Идентификационный Код)';
--TEST
DO $$
BEGIN
--positive
assert public.is_bik('000000000');
assert public.is_bik('123456789');
--negative
assert not public.is_bik('987654321');
assert not public.is_bik('123');
assert not public.is_bik('1234567890');
END $$;