La función FORMAT en PostgreSQL te permite dar formato a argumentos basados en una cadena de formato. Esta función está englobada en las denominadas funciones de cadena.
Sintaxis
Escribe la siguiente sintaxis para utilizarlo:
FORMAT(formato_cadena [, formato_argumentos [, ...] ])
Lenguaje del código: CSS (css)
- FORMAT: es el nombre de la función.
- formato_argumentos: los argumentos a mostrar (el texto que se mostrará)
- formato_cadena: este argumento es una cadena que especifica cómo se debe formatear la cadena resultante. El formato de cadena tiene la siguiente sintaxis:
%[posición][indicador][ancho]tipo
Lenguaje del código: CSS (css)
- posición: es el argumento que debe mostrar, la posición. Siempre comienza en el valor 1 al no ser que se omita y obtendrá el siguiente argumento.
- indicador: si se le indica el símbolo menos le estaremos diciendo que debe justificarlo a la izquierda, sino se escribe nada se justificará a la derecha. Siempre debe usarse junto a la opción ancho.
- ancho: el ancho del argumento, si tu argumento es la palabra ‘hola’ que tiene 4 caracteres y pones un tamaño de 3 no se truncara, pero si pones un tamaño de 5 escribirá un espacio al final y si defines un tamaño de -5 pondrá un espacio al principio debido al flag –
- tipo: tipo al que lo convertirá; s para una cadena, I para identificador y L para ponerlo entre comillas.
Ejemplos
Formato simple con un argumento
En el siguiente ejemplo utilizamos simplemente el formato de salida. Escribimos la palabra ‘Hola’ seguido de una coma y después mostramos el primer argumento que es ‘Bienvenidos’.
SELECT FORMAT('Hola, %s','Bienvenidos');
Lenguaje del código: JavaScript (javascript)
- %: indica que se lea el primer argumento.
- s: indica que debe devolver una cadena.
Formato simple con dos argumentos
En el siguiente ejemplo utilizamos la posición del argumento junto a su tipo. Escribimos la palabra ‘Hola’ seguido de una coma y después mostramos el primer argumento que es ‘Bienvenidos’, junto al segundo que es ‘a mi web’
SELECT FORMAT('Hola, %1$s %2$s','Bienvenidos', 'a mi web');
Lenguaje del código: JavaScript (javascript)
- %1$: indica que se lea el primer argumento.
- %2$: indica que se lea el segundo argumento.
- s: indica que debe devolver una cadena.
Formato con dos argumentos, indicador y ancho
En el siguiente ejemplo utilizamos la posición del argumento, su tipo, el indicador y el número de caracteres. Escribimos la palabra ‘Hola’ seguido de una coma y después mostramos el primer argumento que es ‘ Bienvenidos’, junto al segundo que es ‘a mi web ‘
SELECT FORMAT('|Hola, %1$15s %2$-10s|','Bienvenidos', 'a mi web');
Lenguaje del código: JavaScript (javascript)
Si analizamos la composición del primer formato:
- %1$: indica que se lea el primer argumento.
- 15: es el tamaño que tiene que tener el primer argumento (11 de la palabra ‘Bienvenidos’ más tantos espacios para completar los 15. Los espacios se incluyen a la izquierda porque no se le ha puesto el indicador -)
- s: indica que debe devolver una cadena.
Si analizamos la composición del segundo formato:
- %2$: indica que se lea el segundo argumento.
- 10: es el tamaño que tiene que tener el segundo argumento (+ de la palabra ‘a mi web’ más tantos espacios para completar los 10. Los espacios se incluyen a la derecha porque se le ha puesto el indicador -)
- s: indica que debe devolver una cadena.
Formato con tres argumentos, indicador y ancho
En esta ocasión tenemos tres argumentos, en los dos primeros solo le indicamos la posición (%1$s y %2$s), pero en el tercero solo le indicamos el indicador y el ancho (%-15s). El sistema al no decirle la posición del argumento a leer, obtendrá el siguiente argumento al anterior, en este ejemplo el argumento 3.
SELECT FORMAT('Hola, %1$s %2$s %-15s|','Bienvenidos', 'a mi web', 'de PostgreSQL');
Lenguaje del código: JavaScript (javascript)
Formato escribiendo el caracter %
Para conseguir que nos imprima el carácter % tan solo debemos escribirlo dos veces seguidas:
SELECT FORMAT('Hola, has completado el %1$s%%','100');
Lenguaje del código: JavaScript (javascript)
Formato escribiendo un literal
Para conseguir que nos imprima el argumento entre comillas cambia el formato s por L:
SELECT FORMAT('Hola, %1$L','Miguel');
Lenguaje del código: JavaScript (javascript)