La función SUBSTR en ORACLE es una herramienta fundamental dentro de las funciones de cadena, diseñada para extraer subcadenas de texto a partir de una posición específica. Esta función proporciona una gran flexibilidad, ya que permite definir tanto la posición inicial como la longitud de la subcadena que deseas obtener. Es ideal para trabajar con datos textuales, donde solo necesitas analizar o manipular una parte de la información almacenada.
En este artículo, primero explicaré la sintaxis básica de la función SUBSTR y luego te mostraré ejemplos prácticos que ilustran cómo puedes usarla en diversas situaciones. Un caso típico es extraer las iniciales de un nombre, truncar identificadores o seleccionar fragmentos clave de una cadena como códigos o fechas incluidas en un campo de texto más extenso.
La función SUBSTR en Oracle es extremadamente versátil, ya que puede manejar cadenas de diferentes tipos de datos como CHAR
y VARCHAR2
, y permite trabajar tanto con posiciones positivas (desde el inicio de la cadena) como negativas (contando desde el final). Esto la hace ideal para tareas complejas como normalizar datos o procesar grandes volúmenes de información textual.
Para más información, puedes consultar la documentación oficial de ORACLE.
Sintaxis
Escribe la siguiente sintaxis para utilizar la función SUBSTR en Oracle:
SUBSTR ( cadena, inicio [, longitud] )
- SUBSTR: nombre de la función.
- cadena: es la cadena de entrada para buscar el patrón.
- inicio: es un entero que determina dónde comienza la subcadena.
- longitud: determina el número de caracteres en la subcadena. Si se omite, la función devuelve todos los caracteres a partir de la posición de inicio.
Ejemplos
En el siguiente ejemplo utilizamos la función substr para extraer la palabra MiguelTroyano.com que comienza en la posición 4 y tiene una longitud de 17 caracteres.
SELECT SUBSTR ('En MiguelTroyano.com hay cientos de articulos', 4, 17) RESULTADO FROM dual;

Si necesitas empezar por el final debes indicar un numero negativa. En el siguiente ejemplo empezamos desde la posición -42 y nos quedamos con 17 caracteres. El resultado es idéntico al anterior ejemplo.
SELECT SUBSTR ('En MiguelTroyano.com hay cientos de articulos', -42, 17) RESULTADO FROM dual;

El funcionamiento con un campo de una tabla es idéntico a los anteriores ejemplos. Aquí puedes observar como hemos extraído de cada fila los caracteres desde la posición -7.
SELECT nombre, substr(nombre, -7) RESULTADO FROM empleados;
