SQL - hacer una select para valores nulos

 
Vista:

hacer una select para valores nulos

Publicado por maria (4 intervenciones) el 08/08/2008 12:55:50
Problema con una select con valores nulos.
Hola!
Estoy haciendo una select que me recupera un objeto en base de datos a partir de unos parametros de busqueda de un formulario, mi problema es al realizar la select algunos de estos valores pueden venir a nulo porque el usuario no haya introducido ningun valor y por tanto al hacer la query no los deberia tener en cuenta. Hay algun modo con alguna funcion de decir en la select que si el valor es nulo no lo tenga en cuenta al hacer la query?

En codigo :
String consulta = "select * from user where codigo = '" + objeto.getCodigo() +
"' and nombre = '" + objeto.getNombre() ";
si por ejemplo objeto.nombre es nulo porque el usuario no haya introducido el nombre, la query que deberia hacer sería -> select * from user where codigo = codigo;
en cambio si el usuario ha introducido un nombre sería -> select * from user where codigo = objeto.codigo and nombre = "objeto.nombre";

De momento lo unico que se ma ha ocurrido es ir anidando if comprobando si es nulo e ir contruyendo poco a poco la query pero creo que tiene que haber una forma mucho mejor de hacerlo.
Gracias
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:hacer una select para valores nulos

Publicado por pacopaz (143 intervenciones) el 08/08/2008 18:48:37
No me defines la base de datos que estás usando, ni el lenguaje de programación, pero puedes intentar evaluar directamente en la formación del query, para poder hacer uno sólo, algo como esto:

String consulta = "select * from user where codigo = '" + objeto.getCodigo() +
"' and nombre = '" + [si es nulo objeto.getNombre(), entonces pon 'nombre', si no, pon objeto.getNombre() entre comillas]

Lo que está entre corchetes es seudocódigo.
'nombre' es el nombre del campo, para que cuando evalúe el query, nombre sea igual a nombre y así te traiga todos los registros.
Espero que te sirva.

Saludos.
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
sin imagen de perfil

RE:hacer una select para valores nulos

Publicado por Edgar RQM (2 intervenciones) el 08/08/2008 22:29:03
AMIGO UTILIZA EL ISNULL

ASI MAS O MENOS

NOMBRE = ISNULL(OBJETO.NOMBRE, NOMBRE)

SI ENCUENTRA UN VALOR NULO EN OBJETO.NOMBRE LO REMPLAZARA POR NOMBRE SOLAMENTE Y ASI COMPARARA EL MISMO VALOR Y TE TRAERA TODA ESA INFORMACION CUANDO ES NULO

ESPERO TE SIRVA SALUDOS
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:hacer una select para valores nulos

Publicado por maria (4 intervenciones) el 12/08/2008 12:38:28
Hola.
El problema es que estoy programando en java con struts y la base de datos que estoy utilizando es mysql y la funcion isnull no me la reconoce. Sin embargo he encontrado una funcion if null(exp1, exp2) a la que se le pasan dos parametros, si exp1 es nulo devuelve exp2 y si es distinto de nulo devolveria exp1 asi que se me ha ocurrido lo siguiente :

SELECT * FROM user where nombre = if null(objeto.getNombre, nombre);

Con esta sentencia me da un error de sintaxis ¿puedes ayudarme a depurarlo?
Siento si es una burrada pero es que todavia estoy muy torpe con sql y es lo unico que se me ha ocurrido
Muchas gracias por la ayuda
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