Cómo Usar Eficientemente la Función SUBSTR en los Packages en Oracle

Si sabes cómo usar eficientemente la función SUBSTR podrás usarla en muchos de los procesos que debes desarrollar, especialmente donde tengas que manipular cadenas de texto de cualquier tipo como las cadenas que contienen números, fechas, palabras o caracteres especiales.

La función SUBSTR te permite substraer uno o varios caracteres de una cadena de caracteres para poderlos manipular más fácilmente. La sintaxis de la función SUBSTR es la siguiente:

SUBSTR(<cadena de texto>, <posición inicial>, <cantidad de caracteres>)

Cadena de texto= Es el texto origen del cual se quieren substraer datos.

Posición inicial= Corresponde a la posición desde donde se quiere comenzar a extraer.

Cantidad de caracteres= Corresponde a la cantidad de caracteres que se quieren extraer, si este parámetro no se envía se extraen todos los caracteres hasta el final de la cadena de origen.

La función SUBSTR se puede combinar con otras funciones y/o sentencias de Oracle para obtener mejores resultados, los que hacen que trabaje de forma más eficiente. Revisemos algunos ejemplos prácticos que te permitan entender con mayor claridad cómo utilizar la función SUBSTR.

Ejemplo #1: Supone que debes manipular una cadena de texto para obtener cada uno de sus caracteres y poder realizar una acción con alguno de ellos, veamos cómo se debe hacer:

lst_texto   varchar2(100):= ‘MI CADENA, DE TEXTO,’;

lst_letra   varchar2(1);

lst_cadena varchar2(50);

begin

for lin_pos in 1..length(lst_texto) loop

             lst_letra:= Substr(lst_texto,lin_pos,1); 

if lst_letra = ‘,’ then

dbms_output.put_line(lst_cadena);

lst_cadena:= null;

else

lst_cadena:= nvl(lst_cadena,’’) || lst_letra;

end if;

end loop;

end;

En este ejemplo se está usando el ciclo For  para poder recorrer una cadena de texto, se usa la función Length para obtener el largo de la cadena, con la función Substr se está obteniendo carácter por carácter el que se va concatenando en la variable lst_cadena y finalmente cuando se encuentra el carácter de coma ‘,’ se imprime el texto de la cadena. El resultado de este ejemplo es el siguiente:

MI CADENA

DE TEXTO

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”  ¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

Ejemplo #2: Supone que debes formar el nombre para un archivo a partir de los datos de un empleado usando la función Substr, veamos cómo se hace:

Select

Substr(dep.nombre_dep,1,6) ||’_’||Substr(emp.nombre_emp,1,10) ||’_‘|| substr(to_char(sysdate,’ddmmyyyy’),3,2)

From

t_departamento dep,

t_empleado emp

Where emp.id_empleado = pin_rut

And dep.id_departamento = emp.id_empleado;

En este ejemplo se está usando la función Substr para obtener parte del nombre del departamento, parte del nombre del empleado y el mes de la fecha de ejecución (sysdate). Adicionalmente se está usando el carácter palo ‘|’ el que permite concatenar cadenas de caracteres. El resultado de este ejemplo es el siguiente:

CONTAB_MAURICIO H _04

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de Packages en Oracle  y/o dime cuál es tu principal frustración a la hora de trabajar con Packages en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Escritor del Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en 7 Pasos

Esta entrada fue publicada en Function en Oracle, Procedures en Oracle y etiquetada , , , , , . Guarda el enlace permanente.

4 respuestas a Cómo Usar Eficientemente la Función SUBSTR en los Packages en Oracle

  1. Uriel Ramírez dijo:

    Muchas gracias. Me ha servido para estudiar, mañana tengo examen. Y no dudo en que me servirá en un futuro no muy lejano.

  2. LUIS dijo:

    COMO HACER PARA QUE SOLO ME MUESTRE SOLO EL NOMBRE DENTRO DE UNA CADENA. EJEMPLO. CARLOS GONZALEZ Y SOLO QUIERO QUE ME MUESTRE CARLOS. OSEA QUE ME MUESTRE HASTA LLEGAR A UN ESPACIO EN BLANCO.

    • Hola Luis, gracias por comunicarte y por tu comentario, para hacer eso debes usar la función InStr de la siguiente forma:

      lst_nombre:= ‘CARLOS GONZALEZ’;
      lin_pos_espacio:= instr(lst_nombre,’ ‘);
      lst_Resul:= substr(lst_nombre,1,lin_pos_espacio);

      PD: Ya obtuviste mi libro-reporte sobre ‘Como Construir un SELECT Eficiente en Oracle en Solo 7 Pasos’, si aún no lo tienes puedes obtenerlo desde aquí:
      http://dominatuspackagesenoracle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s