Рядкилише PostgreSQL

FORMAT

Збирає рядок за шаблоном, підставляючи значення замість %s.

Синтаксис

FORMAT('<шаблон>', <значення1>, <значення2>, …)

У шаблоні %s — місце для значення як тексту, %I — для назви таблиці чи стовпця (з лапками, якщо треба), %L — для значення як SQL-літерала в апострофах. Зручніше за довге склеювання через ||, особливо коли значень багато.

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Підставити значення
SELECT FORMAT('Hello, %s!', 'Emma') AS greeting;
greeting
Hello, Emma!
Речення для кожного працівника
SELECT FORMAT('%s works in %s and earns %s', name, department, salary) AS sentence
FROM employees;
sentence
Emma works in backend and earns 1200
Liam works in backend and earns 1000
Olivia works in frontend and earns 1350
Noah works in frontend and earns 950
Sophia works in design and earns 1200
Безпечний текст SQL-запитуСкладніше
SELECT FORMAT('SELECT * FROM %I WHERE name = %L', 'employees', 'O''Brien') AS query;
query
SELECT * FROM employees WHERE name = 'O''Brien'

%L сам узяв значення в апострофи й подвоїв апостроф усередині. Так будують SQL у функціях PL/pgSQL, не боячись SQL-ін'єкцій.

Зверни увагу

NULL через %s стає порожнім рядком: FORMAT('phone: %s', NULL) дає phone: . А %L пише слово NULL.

Щоб вивести сам знак відсотка, пиши %%: FORMAT('%s%%', 50) дає 50%.

Значень менше, ніж місць у шаблоні, — помилка too few arguments for format().

Схожі функції