Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Ayuda con una select

Estas en el tema de Ayuda con una select en el foro de Oracle en Foros del Web. Buenas!! Necesito saber si existe alguna funcion para de un resultado de una consulta solo me saque los numeros, estoy trabajando con DNI's y necesito ...
  #1 (permalink)  
Antiguo 14/01/2009, 06:43
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Ayuda con una select

Buenas!!
Necesito saber si existe alguna funcion para de un resultado de una consulta solo me saque los numeros, estoy trabajando con DNI's y necesito quitar cualquier tipo de caracter extraño o letra.

Ej:

X12345642-Y ---> 12345642

Gracias, un saludo
  #2 (permalink)  
Antiguo 14/01/2009, 13:45
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años, 6 meses
Puntos: 16
Exclamación Respuesta: Ayuda con una select

para eso deberías de coger y crearte una función,
que vaya comprobando que el valor del "espacio actual"
(con un substr('E23455-F', i, 1)) y almacenarlo en una
variable auxiliar para devolver el número.

Si no sabes como hacerlo pregunta, es facil.

CREATE OR REPLACE FUNCTION DAME_NUMERO(PVA_CADENA VARCHAR2)
RETURN VARCHAR2
AS
VNU_RESULT VARCHAR2;
VNU_POSICION NUMBER;
VNU_BASURA NUMBER;
BEGIN


WHILE (LENGTH(PVA_CADENA) <= VNU_POSICION) THEN


BEGIN
VNU_RESULT := VNU_RESULT||TO_NUMBER(SUBSTR(PVA_CADENA, VNU_POSICION, 1));
EXCEPTION
WHEN OTHERS THEN
NULL;
END;

VNU_POSICION := VNU_POSICION +1;

END WHILE;

RETURN(VNA_RESULT);
END DAME_NUMERO;


PRUEBA ESO, YO AHORA MISMO NO PUEDO PROBAR PORQUE NO TENGO INSTALADO ORACLE...



Saludos!!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #3 (permalink)  
Antiguo 26/01/2009, 05:56
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda con una select

Cita:
Iniciado por Drako_18 Ver Mensaje
para eso deberías de coger y crearte una función,
que vaya comprobando que el valor del "espacio actual"
(con un substr('E23455-F', i, 1)) y almacenarlo en una
variable auxiliar para devolver el número.

Si no sabes como hacerlo pregunta, es facil.

CREATE OR REPLACE FUNCTION DAME_NUMERO(PVA_CADENA VARCHAR2)
RETURN VARCHAR2
AS
VNU_RESULT VARCHAR2;
VNU_POSICION NUMBER;
VNU_BASURA NUMBER;
BEGIN


WHILE (LENGTH(PVA_CADENA) <= VNU_POSICION) THEN


BEGIN
VNU_RESULT := VNU_RESULT||TO_NUMBER(SUBSTR(PVA_CADENA, VNU_POSICION, 1));
EXCEPTION
WHEN OTHERS THEN
NULL;
END;

VNU_POSICION := VNU_POSICION +1;

END WHILE;

RETURN(VNA_RESULT);
END DAME_NUMERO;


PRUEBA ESO, YO AHORA MISMO NO PUEDO PROBAR PORQUE NO TENGO INSTALADO ORACLE...



Saludos!!!

Gracias por la respuesta, pero necesito hacerlo directamente en la SELECT si a alguien se lo ocurre algo estaria muy agradecido, saludos
  #4 (permalink)  
Antiguo 26/01/2009, 19:35
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: Ayuda con una select

pues mete la funcion en el select

select DAME_NUMERO(cadena) from dual
__________________
Blogzote.com :-) Mi blog
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:11.