Si tienes un aplicación que busca por N campos:
SELECT * FROM table WHERE campo1 = '...' AND campo2 = '....' AND
campo3 = '...';
Creo que lo mas decente esque la aplicación detecte cuando el valor
esté en blanco y no lo incluya dentro del WHERE. De este modo si el
usuario ingresa texto en el campo1 debiese ser:
SELECT * FROM table WHERE campo1 = '...';
Si busca por el campo1 y campo2:
SELECT * FROM table WHERE campo1 = '...' AND campo2 = '...';
De igual forma y feamente lo podrías conseguir así:
SELECT * FROM table WHERE
(TU_VARIABLE != '' AND campo1 = TU_VARIABLE)
AND
(TU_VARIABLE != '' AND campo2 = TU_VARIABLE)
AND
(TU_VARIABLE != '' AND campo2 = TU_VARIABLE);
Suponiendo que lo que haces es tirar un VACIO y no la palabra NULL.
Recuerda que VACIO y NULO son dos cosas distintas.
El 26-07-2010, a las 11:29, Fernando Siguenza escribió:
Gracias amigos por las respuestas creo que no me explique bien, lo
que deseo es hacer una busqueda de facturas por varios campos de la
tabla, pero no siempre se ingresan todos los campos por los que
deseo buscar, por ejemplo
SELECT * FROM facturas WHERE codigocliente LIKE '010%' AND
fecha='01/01/2010';
Esta consulta me funciona muy bien para cuando el usuario quiere
buscar por codigo y por fecha, pero que pasa si solo quiere buscar
por codigo de cliente, en la variable de fecha va a estar con valor
null, como haria en este caso, ya que son algunos campos y para el
ejemplo solohe puesto2.
Gracias
CC: [email protected]
From: [email protected]
To: [email protected]
Subject: Re: [pgsql-es-ayuda] Select con valores nulos
Date: Mon, 26 Jul 2010 11:21:36 -0400
Es claro que si ingresas "OR" basta con que encuentre una de las 2
condiciones para que te retorne filas.
Si quieres descartas TODOS los valores NULOS:
Si no es eso, entonces no entiendo bien.
El 26-07-2010, a las 11:02, Fernando Siguenza escribió:
Amigos como estan, queria molestarles con un select que quiero
armar, tengo que hacer una busqueda en la tabla facturas, por varios
campos entre los cuales tengo el codigo del cliente y la fecha,
entonces lo que deseo es como puedo armar una consulta de tal forma
que detecte que si uno de los dos campos esta en valor null no lo
inclua en la consulta.
Algo asi
Esta seria la consulta en el caso que se quiera buscar por los dos
campos
Select * from facturas where codigocliente like '010%' or
fecha='01/01/2010';
Pero si no ingreso nada en codigo cliente y este esta en null,como
podria hacer para comparar a ver si es null y que ya no me busque
por ese campo
Select * from facturas where fecha='01/01/2010';
Una consulta parecida la tenia en mysql y es algo asi, pero no se
como implementarlo en postgre
select
SocioId,Nombre,Apellido,Ruc,FecNacimiento,EstadoCivil,Direccion,
Telefono,Celular,ViviendaPropia
from socios
where ((@vNombre IS NULL) OR (Nombre like CONCAT('%', @vNombre, '%')))
and ((@vApellido IS NULL) OR (Apellido like CONCAT('%', @vApellido,
'%')))
and ((@vTelefono IS NULL) OR (Telefono like CONCAT('%', @vTelefono,
'%')))
Esta ultima consulta hace lo que deseo en mysql como puedo hacer
algo parecido en postgre.
Muchas gracias por la ayuda.
Saludos
Connect to the next generation of MSN Messenger Get it now!
------------------------
Manuel Diego Paillafil Gamboa
[email protected]
Connect to the next generation of MSN Messenger Get it now!
------------------------
Manuel Diego Paillafil Gamboa
[email protected]
Móvil: 06 - 801 60 24