• Categoría: Oracle SQL
  • Visto: 137582

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 

La función INSTR() busca el valor de subcadena en cadena. La operación de búsqueda se define como una comparación del argumento subcadena en el argumento cadena de la misma longitud y hasta que se encuentra una coincidencia. Cada comparación comienza por el primer carácter de la izquierda (para búsquedas hacia delante) o del primer carácter de la derecha (para búsquedas hacia atrás).

 

Si una subcadena que es igual a subcadena se encuentra, entonces la función devuelve un entero que indica la posición del primer carácter de esta subcadena. Si no se encuentra subcadena la función devuelve cero.

 

Sintaxis

 

INSTR(cadena, subcadena, posicion, ocurrencia)

 

Propósito

 

* posicion es un número entero distinto de cero que indica el carácter de cadena en donde Oracle comienza la búsqueda, es decir, la posición del primer carácter de la primera subcadena para comparar con subcadena. Si posicion es un valor negativo, entonces Oracle cuenta hacia atrás desde el final de cadena y luego busca hacia atrás de la posición resultante.

 

* ocurrencia es un número entero que indica que ocurrenciaOracle debe buscar de subcadena en cadena. El valor de la ocurrencia debe ser positivo. Si ocurrencia es mayor que 1, entonces Oracle no nos devuelve la primera ocurrencia pero sigue comparando subcadenas consecutivas en cadena, como se describe anteriormente, hasta que la aparición coincide con el número que se ha especificado en el argumento ocurrencia.

 

Tanto cadena como subcadena puede ser cualquiera de los tipos de datos CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, o NCLOB. El valor devuelto es del tipo de datos NUMBER.

 

posicion y ocurrencia deben ser de tipo de datos NUMBER, o cualquier tipo de datos que se puedan convertir implícitamente a NUMBER, y debe resolverse en un número entero. El valor por defecto para posicion y ocurrencia es 1, es decir, Oracle comienza a buscar en el primer carácter de cadena para la primera aparición de subcadena. El valor de retorno es relativo al principio de cadena, independientemente del valor de posicion.

Ejemplos:

 

El siguiente ejemplo busca en la cadena MATARATAS LARATA, a partir de la tercera posición, la cadena "TA". Devuelve la posición en  MATARATAS LARATA de la segunda aparición de "TA": 

 


SQL> SELECT INSTR('MATARATAS LARATA','TA', 3, 2) "Prueba" FROM DUAL;
Prueba
----------
7


 

En el siguiente ejemplo, Oracle cuenta hacia atrás desde el tercer carácter por la derecha. Oracle busca entonces hacia atrás para la segunda aparición de "TA", y considera que esta segunda aparición se inicia con el tercer carácter:

 


SQL> SELECT INSTR('MATARATAS LARATA','TA', -3, 2) "Prueba" FROM DUAL;
Prueba
----------
3