Cadenassolo PostgreSQL

FORMAT

Construye una cadena a partir de una plantilla, poniendo valores en lugar de %s.

Sintaxis

FORMAT('<plantilla>', <valor1>, <valor2>, …)

En la plantilla, %s es el hueco para un valor como texto; %I, para el nombre de una tabla o columna (con comillas si hace falta); %L, para un valor como literal SQL entre comillas simples. Más cómodo que una larga cadena de ||, sobre todo cuando hay muchos valores.

Datos para los ejemplos

employees

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

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Poner un valor
SELECT FORMAT('Hello, %s!', 'Emma') AS greeting;
greeting
Hello, Emma!
Una frase para cada empleado
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
Texto de consulta SQL seguroAvanzado
SELECT FORMAT('SELECT * FROM %I WHERE name = %L', 'employees', 'O''Brien') AS query;
query
SELECT * FROM employees WHERE name = 'O''Brien'

%L puso el valor entre comillas simples y duplicó por sí solo el apóstrofo interior. Así se construye SQL en las funciones de PL/pgSQL sin miedo a la inyección SQL.

Ten en cuenta

NULL con %s se convierte en una cadena vacía: FORMAT('phone: %s', NULL) da phone: . %L, en cambio, escribe la palabra NULL.

Para mostrar el propio signo de porcentaje, escribe %%: FORMAT('%s%%', 50) da 50%.

Menos valores que huecos en la plantilla es un error: too few arguments for format().

Funciones relacionadas