ayuda con pl/sql

juanh
07 de Septiembre del 2005
Necesito buscar dentro de una cadena de caracteres, caracteres numéricos, extraelos de esa cadena para pasarlos a una variable.

Si alguien sabe que fucnión puedo utilizar para ir contando caracteres dentro de una cadena e identificar los mismos se lo agradezco un monton,
slds

aaaa
07 de Septiembre del 2005
En PHP se puede hacer con preg_replace, pero en pl/sql creo que no existe el tema de las expresiones regulares, por lo tanto tendras que montarte alguna funcion que te extraiga numeros, quizas con TRANSLATE(string,fromlist,tolist) y INSTR(string,target,start,nth) puedas montarla.

Manuel Lopez
07 de Septiembre del 2005
Hola juanh ...

Si lo que quieres es lo que dice la primera linea he aqui una soluccion rapida ...

Function GetNumber( sStr VARCHAR2 ) RETURN VARCHAR2
IS
vChr CHAR(1);
nStr VARCHAR2(30) := '';

BEGIN
FOR I IN 1..LENGTH( sStr ) LOOP
vChr := SUBSTR( sStr, I, 1 );
IF vChr IN ( '1','2','3') THEN
nStr := nStr || vChr;
END IF;
END LOOP;
RETURN nStr;
END;

La hice, la probe y me da elegante, solo debes adicionar mas numeros pues como ves solo le pongo 1, 2 y 3 pero puedes poner los caracteres que quieras, es mas, puedes usar una funcion que te busque el caracter dentro de los que tu pongas como la funcion INSTR pero lo quise hacer asi para que fuera mas ilustrativo el codigoooo
una llamada a esa funcion dentro de un form seria:

Declare
vStr VARCHAR2(30);
begin
vStr := GetNumber( :BLOCK3.TEXT_ITEM6 );
:Block3.DISPLAY_ITEM5 := vStr;
end;

SI el BLOCK3.TEXT_ITEM6 tiene la cadena 'aa3bc2fg1'
la salida sera '321'

Es esto lo que querias ??????????????

Saludos
Manuel