Иллюстрированный самоучитель по PostgreSQL

Возвращение переменных

Конкатенация

Конкатенацией называется процесс построения новой строки посредством объединения двух (и более) строк. Конкатенация принадлежит к числу стандартных операций PostgreSQL и поэтому может напрямую использоваться с переменными в функциях PL/pgSQL. Это незаменимый инструмент форматирования при работе с несколькими переменными, содержащими символьные данные.

Конкатенация используется только со строками. Оператор конкатенации (||) ставится между объединяемыми компонентами (литералами или строковыми переменными). Вы можете объединить две строки в одну составную строку или сформировать более сложную комбинацию из нескольких исходных строк.

В листинге 11.32 операция конкатенации создает строку, возвращаемую функцией.

Листинг 11.32. Возвращение результата конкатенации.

CREATE FUNCTION compound_word(text .text) RETURNS text AS '
DECLARE
--Объявление псевдонимов для аргументов функций.
wordl ALIAS FOR $1: word2 ALIAS FOR $2:
BEGIN
--Вернуть объединение двух слов.
RETURN wordl || word2:
END:
' LANGUAGE 'plpgsql:

Если передать функции аргументы "break" и "fast", функция вернет объединенную строку "breakfast":

booktown=# SELECT compound_word('break'. 'fast');
compound_word
breakfast
(1 row)

В листинге 11.33 строковой переменной result присваивается результат конкатенации нескольких компонентов.

Листинг 11.33. Присваивание строковой переменной результата конкатенации.

CREATE FUNCTION title_and_author (text, text) RETURNS text AS '
DECLARE
--Объявление псевдонимов для двух аргументов функции,
title ALIAS for $1: author ALIAS for $2:
--Объявление текстовой переменной для хранения
--строкового результата конкатенации, result text;
BEGIN
--Объединить переменные title и author.
--разделив их запятой .result: = title | " .by " 11 author;
--Вернуть полученную строку.
return result:
END;
' language 'plpgsql';

Если передать этой функции строки "Practical PostgreSQL" и "Command Prompt, Inc.", то функция вернет строку "Practical PostgreSQL, by Command Prompt, Inc.":

booktown=# SELECT title_and_author('Practical PostgreSQL'.'Command Prompt, Inc.');
title and author
Practical PostgreSQL .by Command Prompt. Inc.
(1 row)
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.