PostgreSQL | Функция проверки наличия пробелов в строке данных или строке запроса с клиента — efim360.ru

PostgreSQL | Функция проверки наличия пробелов в строке данных или строке запроса с клиента

 

Как узнать есть ли пробелы в строке данных или строке запроса клиента через PostgreSQL?

Мы напишем функцию g4. У нас схема называется test1. Внутри тела функции будет производиться сопоставление на наличие пробелов. Проще всего это делать регулярными выражениями, которые работают практически во всех языках программирования одинаково.

Эта функция будет возвращать логическое значение TRUE или FALSE если встретит пробел в строке.

-- Добавляем язык 'plpgsql'
-- Добавляем СТАРТ (BEGIN) и ФИНИШ (END)

CREATE OR REPLACE FUNCTION test1.g4(str text)
RETURNS boolean
LANGUAGE 'plpgsql'
AS 
$BODY$
  BEGIN
    RETURN str ~ ' ';
  END;
$BODY$;

 

Пример работы функции

SELECT test1.g4('bla bla bla'); -- true
SELECT test1.g4('ffgghh'); -- false

Скриншоты:

TRUE - Пробелы есть в строке данных - PostgreSQL
TRUE - Пробелы есть в строке данных - PostgreSQL
FALSE - Пробелов нет в строке данных - PostgreSQL
FALSE - Пробелов нет в строке данных - PostgreSQL

 

Как удалить эту функцию?

DROP FUNCTION test1.g4(str text);

 

Зачем мы проверяем на наличие пробелов в строке?

Почти всегда требуется проверка корректности вводимых данных. Таблицы в PostgreSQL устроены таким образом, что определённый столбец ожидает определённый тип данных и никак иначе. Если мы говорим, что в столбце А храним URL-адреса, то нам не нужны строки с рецептами клубничного варенья. URL-адреса имеют характерный индивидуальный синтаксис, который можно легко отличить от других данных. Один из признаков URL - отсутствие символов пробела.

Задача функций - проверять валидность (корректность) данных перед остальными операциями CRUD (Create, Read, Update, Delete).

 

Информационные ссылки

PostgreSQL | Проверка содержимого строки перед вставкой в таблицу по условию

Сайт СУБД PostgreSQL - https://www.postgresql.org

Команды SQL - https://postgrespro.ru/docs/postgresql/14/sql-commands

Команда CREATE FUNCTION - https://postgrespro.ru/docs/postgresql/14/sql-createfunction

Команда SELECT - https://postgrespro.ru/docs/postgresql/14/sql-select

Раздел "9.4. Строковые функции и операторы" - https://postgrespro.ru/docs/postgresql/14/functions-string

Раздел "9.7.3. Регулярные выражения POSIX" - https://postgrespro.ru/docs/postgresql/14/functions-matching#FUNCTIONS-POSIX-REGEXP

Раздел "43.6. Управляющие структуры" - https://postgrespro.ru/docs/postgresql/14/plpgsql-control-structures

Графический интерфейс pgAdmin - https://www.pgadmin.org