Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Oracle/PLSQL: analice el valor de la cadena, luego devuelva la subcadena
Problema: estoy tratando de analizar el valor en un campo de Oracle. Tengo que encontrar la aparición del tercer y cuarto guión bajo en la cadena y devolver el valor que se encuentra entre esos dos guiones bajos.
Por ejemplo, el campo puede contener los siguientes valores:
'F:SiebfileYDS_SR_ATT_1-60SS_1-AM3L.SAF'
En este caso, necesito devolver un valor de “1-60SS” porque ese es el valor entre el tercer y el cuarto guión bajo.
R: Esta no es una tarea fácil. Por lo tanto, necesitamos crear una función en Oracle para analizar la cadena por nosotros.
La siguiente función utiliza la función INSTR para determinar la posición de los guiones bajos tercero y cuarto. Luego usa la función SUBSTR para devolver el valor entre los dos guiones bajos.
create or replace function parse_value (pValue varchar2) return varchar2 is v_pos3 number; v_pos4 number; begin /* Return 3rd occurrence of '_' */ v_pos3 := INSTR (pValue, '_', 1, 3) + 1; /* Return 4rd occurrence of '_' */ v_pos4 := INSTR (pValue, '_', 1, 4); return SUBSTR (pValue, v_pos3, v_pos4 - v_pos3); end parse_value;
Obtenga más información sobre las características de INSTR.
Obtenga más información sobre la función SUBSTR.