Referencia de funciones de PostgreSQL

Lo esencial de cada función: qué hace, cómo se llama, ejemplos que puedes modificar y ejecutar aquí mismo, y en qué fijarte para no tropezar.

Estas son las funciones principales, suficientes para la mayoría de las consultas. Todas las demás están en la documentación oficial de PostgreSQL(se abre en una pestaña nueva).

Condicionales

Números

Cadenas

LENGTH

Cuenta cuántos caracteres tiene una cadena.

LENGTH(<texto>)
LOWER

Pasa un texto a minúsculas.

LOWER(<texto>)
UPPER

Pasa un texto a mayúsculas.

UPPER(<texto>)
INITCAP

Pone en mayúscula la primera letra de cada palabra y el resto en minúscula.

INITCAP(<texto>)
TRIM

Quita los espacios (u otros caracteres) del principio y del final de una cadena.

TRIM(<texto>)
SUBSTRING

Extrae una parte de una cadena: desde la posición y con la longitud que necesites.

SUBSTRING(<texto> FROM <inicio>)
LEFT

Toma el número indicado de caracteres del principio de una cadena.

LEFT(<texto>, <cantidad>)
RIGHT

Toma el número indicado de caracteres del final de una cadena.

RIGHT(<texto>, <cantidad>)
POSITION

Encuentra en qué carácter empieza una subcadena dentro de una cadena.

POSITION(<subcadena> IN <texto>)
STARTS_WITH

Comprueba si una cadena empieza por el prefijo indicado.

STARTS_WITH(<texto>, <prefijo>)
REPLACE

Sustituye en una cadena todas las apariciones de un texto por otro.

REPLACE(<texto>, <buscar>, <reemplazo>)
TRANSLATE

Sustituye caracteres sueltos por otros, cada uno por el suyo, en una sola pasada.

TRANSLATE(<texto>, <caracteres>, <reemplazos>)
REGEXP_LIKE

Comprueba si una cadena encaja con una expresión regular.

REGEXP_LIKE(<texto>, '<patrón>')
REGEXP_MATCHES

Extrae de una cadena las partes que encajan con una expresión regular.

REGEXP_MATCHES(<texto>, '<patrón>')
REGEXP_SUBSTR

Devuelve el primer fragmento de una cadena que encaja con una expresión regular, como texto normal.

REGEXP_SUBSTR(<texto>, '<patrón>')
REGEXP_REPLACE

Sustituye las partes de una cadena que encajan con una expresión regular.

REGEXP_REPLACE(<texto>, '<patrón>', <reemplazo>)
SPLIT_PART

Divide una cadena por un separador y devuelve la parte con el número que necesites.

SPLIT_PART(<texto>, <separador>, <número de parte>)
CONCAT

Une varios valores en una sola cadena, saltándose los NULL.

CONCAT(<valor1>, <valor2>, …)
FORMAT

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

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

Rellena una cadena por la izquierda hasta la longitud que necesites.

LPAD(<texto>, <longitud>)
RPAD

Rellena una cadena por la derecha hasta la longitud que necesites.

RPAD(<texto>, <longitud>)
REPEAT

Repite una cadena el número de veces indicado.

REPEAT(<texto>, <veces>)
REVERSE

Da la vuelta a una cadena.

REVERSE(<texto>)
MD5

Calcula el hash MD5 de una cadena: 32 caracteres hexadecimales.

MD5(<texto>)

Fechas y horas

Tipos

Arrays y series

JSON

Búsqueda de texto completo

De agregación

De ventana

ROW_NUMBER

Numera las filas 1, 2, 3… en un orden dado: en todo el resultado o dentro de cada grupo.

ROW_NUMBER() OVER (ORDER BY <criterio de orden>)
RANK

Asigna puestos teniendo en cuenta los empates: los valores iguales comparten puesto y el siguiente se salta.

RANK() OVER (ORDER BY <criterio de orden>)
DENSE_RANK

Asigna puestos teniendo en cuenta los empates, pero sin huecos: 1, 2, 2, 3.

DENSE_RANK() OVER (ORDER BY <criterio de orden>)
PERCENT_RANK

Muestra la posición relativa de una fila de 0 a 1: qué proporción de las demás filas queda por delante.

PERCENT_RANK() OVER (ORDER BY <criterio de orden>)
CUME_DIST

Muestra la proporción de filas que quedan por delante de la actual o empatan con ella, de 0 a 1.

CUME_DIST() OVER (ORDER BY <criterio de orden>)
NTILE

Divide las filas en el número de grupos indicado, de tamaño parecido, y numera los grupos.

NTILE(<número de grupos>) OVER (ORDER BY <criterio de orden>)
LAG

Toma un valor de la fila anterior para compararlo con el de la actual.

LAG(<expresión>) OVER (ORDER BY <criterio de orden>)
LEAD

Toma un valor de la fila siguiente para compararlo con el de la actual.

LEAD(<expresión>) OVER (ORDER BY <criterio de orden>)
FIRST_VALUE

Toma el valor de la primera fila de la ventana.

FIRST_VALUE(<expresión>) OVER (ORDER BY <criterio de orden>)
LAST_VALUE

Toma el valor de la última fila de la ventana, pero solo con el marco correcto.

LAST_VALUE(<expresión>) OVER ( ORDER BY <criterio de orden> ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )
NTH_VALUE

Toma el valor de la fila N de la ventana: la segunda, la tercera…

NTH_VALUE(<expresión>, <n>) OVER ( ORDER BY <criterio de orden> ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING )