Initial commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
-- Функция: нет двойных пробелов подряд
|
||||
CREATE OR REPLACE FUNCTION no_double_space (str text)
|
||||
RETURNS boolean
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN str !~ E'\s{2,}';
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql
|
||||
IMMUTABLE;
|
||||
|
||||
-- Функция: нет пробелов в начале и конце строки
|
||||
CREATE OR REPLACE FUNCTION no_space_start_end (str text)
|
||||
RETURNS boolean
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN str !~ E'^\s'
|
||||
AND str !~ E'\s$';
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql
|
||||
IMMUTABLE;
|
||||
|
||||
-- Функция: нет пробелов вообще
|
||||
CREATE OR REPLACE FUNCTION no_space (str text)
|
||||
RETURNS boolean
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN str !~ E'\s';
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql
|
||||
IMMUTABLE;
|
||||
|
||||
-- Функция: длина строки в заданных границах
|
||||
CREATE OR REPLACE FUNCTION str_length_between (str text, min_len int, max_len int)
|
||||
RETURNS boolean
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN LENGTH(str) BETWEEN min_len AND max_len;
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql
|
||||
IMMUTABLE;
|
||||
|
||||
-- Функция: стандартная проверка для слова
|
||||
CREATE OR REPLACE FUNCTION default_word_check (str text)
|
||||
RETURNS boolean
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN str IS NULL
|
||||
OR no_space (str)
|
||||
AND str_length_between (str, 1, 64);
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql
|
||||
IMMUTABLE;
|
||||
|
||||
-- Функция: стандартная проверка для строки
|
||||
CREATE OR REPLACE FUNCTION default_str_check (str text)
|
||||
RETURNS boolean
|
||||
AS $$
|
||||
BEGIN
|
||||
RETURN str IS NULL
|
||||
OR no_double_space (str)
|
||||
AND no_space_start_end (str)
|
||||
AND str_length_between (str, 1, 128);
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql
|
||||
IMMUTABLE;
|
||||
|
||||
Reference in New Issue
Block a user