"El lenguaje de base siempre es demasiado cuadrado" es lo que siempre eh dicho, no por ello puedo decir que lo encuentro aburrido ya que sin este lenguaje nadamas no podriamos obtener información de manera precisa respaldada y bueno, todo lo bueno que nos dejan las bases de datos.
Ahora solo les hablare de una función que es de mucha ayuda en otros lenguajes, tales como java, javascript, php, entre otros. Se trata nada mas y nada menos que de la funcion REGEXP_SUBSTR
la cual nos permite hacer un substring a la cadena que pasamos como parametro, dejando en un arreglo ( columna ) el resultado esperado.
Sin mas por el momento, vamos al grano...
Suponiendo que tenemos una cadena como la siguiente.
"En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas"
En este caso la cadena esta separada por el caracter [ | ] el cual sera nuestro separador ( antes de continuar aclaro estar trabajando con PLSQL Developer, pero la funcion es la misma en otros id's ), comenzando con un bloque anonimo creamos nuestras variables.
Aquí, lo que da como resultado este bloque anónimo es una muestra el valor de la variable con el texto que anteriormente dijimos.
A continuación se se parsea la cadena guardandola en la variable vt_dato.
Los campos de la función en el orden que los va pidiendo:
1.- is_cadena_str : cadena que queremos parsear,
2.- '[^|]+' : expresion que nos ayuda a separar la cadena por el caracter |
3.- 1 : El numero de consecutivos a seguir dependiendo cada separador, si se pone 2 deja a un lado la primera posicion del resultado es decir de ser 8 los valores resultado de esta cadena solo seran 7.
4.- level: undefined. required : true.
Ya para finalizar recorremos el resultado en un for loop mostrando nuestra cadena dentro del arreglo, colection, tabla.
Dejando como salida.
is_cadena_str: En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas
valor de vt_dato( 1 ): En
valor de vt_dato( 2 ): inovania.blogspot.com
valor de vt_dato( 3 ): siempre
valor de vt_dato( 4 ): encuentro
valor de vt_dato( 5 ): respuestas
valor de vt_dato( 6 ): a
valor de vt_dato( 7 ): mis
valor de vt_dato( 8 ): dudas
No olvides dejarme tus comentarios. si hay algo que se me paso, escribe y daré respuesta.
Hasta la proxima.
Ahora solo les hablare de una función que es de mucha ayuda en otros lenguajes, tales como java, javascript, php, entre otros. Se trata nada mas y nada menos que de la funcion REGEXP_SUBSTR
la cual nos permite hacer un substring a la cadena que pasamos como parametro, dejando en un arreglo ( columna ) el resultado esperado.
Sin mas por el momento, vamos al grano...
Suponiendo que tenemos una cadena como la siguiente.
"En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas"
En este caso la cadena esta separada por el caracter [ | ] el cual sera nuestro separador ( antes de continuar aclaro estar trabajando con PLSQL Developer, pero la funcion es la misma en otros id's ), comenzando con un bloque anonimo creamos nuestras variables.
--declaracion de un bloque anonimo declare --declaracion de variables TYPE t_separador IS TABLE OF TABLA.COLUMNA%type;--SE PASA EL TIPO DE DATO QUE SEA LO QUE SEPARAREMOS vt_dato t_separador; is_cadena_str VARCHAR2( 100 ); begin --asignacion de valor a variable is_cadena_str:= 'En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas'; --impresion de contenido de variable dbms_output.put_line('is_cadena_str: ' || is_cadena_str ); --fin del bloque anonimo end;
Aquí, lo que da como resultado este bloque anónimo es una muestra el valor de la variable con el texto que anteriormente dijimos.
A continuación se se parsea la cadena guardandola en la variable vt_dato.
select valor bulk collect into vt_dato from ( select regexp_substr(is_cadena_str,'[^|]+', 1, level) as valor from dual connect by regexp_substr(is_cadena_str, '[^|]+', 1, level) is not null );
Los campos de la función en el orden que los va pidiendo:
1.- is_cadena_str : cadena que queremos parsear,
2.- '[^|]+' : expresion que nos ayuda a separar la cadena por el caracter |
3.- 1 : El numero de consecutivos a seguir dependiendo cada separador, si se pone 2 deja a un lado la primera posicion del resultado es decir de ser 8 los valores resultado de esta cadena solo seran 7.
4.- level: undefined. required : true.
Ya para finalizar recorremos el resultado en un for loop mostrando nuestra cadena dentro del arreglo, colection, tabla.
for a in vt_dato.first .. vt_dato.last loop dbms_output.put_line( 'valor de vt_dato( ' || a || ' ): ' || vt_dato( a ) || '' ); end loop;
Dejando como salida.
is_cadena_str: En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas
valor de vt_dato( 1 ): En
valor de vt_dato( 2 ): inovania.blogspot.com
valor de vt_dato( 3 ): siempre
valor de vt_dato( 4 ): encuentro
valor de vt_dato( 5 ): respuestas
valor de vt_dato( 6 ): a
valor de vt_dato( 7 ): mis
valor de vt_dato( 8 ): dudas
No olvides dejarme tus comentarios. si hay algo que se me paso, escribe y daré respuesta.
Hasta la proxima.