Oracle - AYUDA,PLEASEEEE

 
Vista:

AYUDA,PLEASEEEE

Publicado por bercyano (39 intervenciones) el 08/01/2008 12:51:17
Buenas dias tengo una duda,
Si yo tengo una campo númerico y meto un caracter alfanúmerico en ese campo ,si yo hago:
select to_number(campo)
from tabla

Me da el error invalid number.Hasta ahi todo correcto pero, si yo hago :
select count(1) from
(select to_number(campo)
from tabla)
No me da error y me devuelve todos los registros de la tabla.
¿QUIEN ME PUEDE EXPLICAR ESTO?ENTIENDO QUE SERÁ UN BUG,no?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA,PLEASEEEE

Publicado por ML (1 intervención) el 08/01/2008 17:40:55
Porque el optimizador transforma internamente tu query en:

select count(1) from (select null from tabla)

Lo mismo sucede con un query de este tipo :

select * from tabla where exists(select to_number(campo1) from tabla)

El optimizador es suficientemente inteligente para darse cuenta que aplicar la funcion al campo es irrelevante al resultado del query, y usar null es suficiente para llegar al resultado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA,PLEASEEEE

Publicado por bercyano (39 intervenciones) el 08/01/2008 18:11:43
Muchas gracias por la aclaracion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA,PLEASEEEE

Publicado por jgde (1 intervención) el 09/01/2008 13:48:26
pusiste ; ???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar