Parzibyte's blog

Blog de conocimiento gratuito: linux, programación, open source, bases de datos, android, frameworks, web e informática en general.

Extraer parte de cadena en PostgreSQL usando substring

En este post sobre PostgreSQL te mostraré cómo usar la función substring para extraer parte de una cadena o cortar una cadena.

También te mostraré cómo convertir el valor a texto para que satisfaga los argumentos de la función.

La función substring

Esta función toma los siguientes argumentos en orden:

  1. La cadena de la que se extrae la otra cadena, o también la cadena que se va a cortar
  2. La posición desde donde comenzar a extraer la cadena. Comienza en 1
  3. Cuántos caracteres extraer

Podemos usar cadenas literales o campos que ya existan. Otra forma que también funciona es:

substring(cadena from [posición] for [cuántos])

Lo veremos más a detalle con los ejemplos.

Ejemplos de substring

Tengo la siguiente tabla que tiene nombre y fecha de registro de usuarios. El tipo de dato del nombre es text, pero el de la fecha es date; más adelante verás la razón.

Si queremos extraer las primeras dos letras entonces podemos comenzar la extracción desde la posición 1, y luego tomar 2:

Lo mismo funcionaría usando la sintaxis de from y for:

Ahora mostraré otro ejemplo en donde extraemos la tercer letra. Quedaría así: select substring(nombre,3, 1) from nombres;

Con la siguiente salida:

Como lo mencioné anteriormente, también funciona con cadenas literales:

Casteando datos

Ahora vamos a suponer que queremos extraer los primeros 4 dígitos de la fecha de registro; es decir, el año. (no tiene mucho sentido pero sirve para ejemplo).

La consulta sería algo así:

select substring(fecha_registro, 1, 4) as año, nombre from nombres;

Pero al intentar ejecutarla, la salida es:

El error es claro y dice: no existe la función pg_catalog.substring(date, integer, integer).

Quiere decir que no existe una función definida con ese tipo de datos; ya que existe una que recibe como primer argumento un tipo text.

Por lo tanto simplemente podemos castear como nos lo sugiere (fíjate en el ::text):

Y ahora sí funciona de maravilla:

Función substring en PostgreSQL – Extraer cadena

Esto es porque la función espera un parámetro de tipo text al inicio, y nosotros le estábamos enviando uno de tipo date; lo cual se soluciona casteando o convirtiendo el tipo de dato.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *