miércoles, 14 de enero de 2009

ORACLE. Función de texto SUBSTR y INSTR

Ya sea dentro de PL/SQL o bien en el mismo SQL Plus las funciones de gestión de textos son muy utilizadas. Algunas con mayor o menor acierto.

Unas de las más utilizadas, sobre todo el tratamiento de flags, tenemos a:

SUBSTR(cadena,inicio,longitud) para extraer unas letras de un texto. Los parámetros:
  • cadena = Texto
  • inicio = Posición Inicial, por defecto 1. Si el valor es negativo, p.e. -1, la posición inicial es la longitud de la cadena -1. Si ponemos 0, Oracle pondrá 1.
  • longitud = Longitud del texto a extraer. En caso de omitirse se extrae todo el string.
Ejemplos

substr('abcdefg', 3, 2) = 'cd'
substr('abcdefg', 3) = 'cdefg'
substr('abcdefg', -3, 1) = 'e'

IN
STR(cadena,cadena_a_buscar, inicio, iteración) para buscar la posición donde se encuentra la cadena a buscar. Los parámetros:
  • cadena = Texto donde se buscará
  • cadena_a_buscar = Texto que se buscará
  • inicio = Posición Inicial, por defecto 1. Si el valor es negativo, p.e. -1, la posición inicial es la longitud de la cadena -1 y entonces la busqueda es modo reverso
  • iteración = Número de vez que buscamos.
En caso de encontrar se devuelve 0.

Ejemplos

instr('abcdeabcde', 'e') = 5
instr('abcdeabcde', 'e',1,1) = 5
instr('abcdeabcde', 'e',1,2) = 10
instr('abcdeabcde', 'e',-2,1) = 5
instr('abcdeabcde', 'a',-2,2) = 1