Skip site navigation (1) Skip section navigation (2)

Re: Select con valores nulos

From: Manuel Diego <manuel(at)radiohead(dot)cl>
To: Fernando Siguenza <fsigu(at)hotmail(dot)com>
Cc: Foro Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Select con valores nulos
Date: 2010-07-26 15:42:31
Message-ID: 7A1F75AA-E0BD-4FD7-96F2-3E42155011DA@radiohead.cl (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
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: pgsql-es-ayuda(at)postgresql(dot)org
> From: manuel(at)radiohead(dot)cl
> To: fsigu(at)hotmail(dot)com
> 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
> manuel(at)radiohead(dot)cl
>
>
>
>
> Connect to the next generation of MSN Messenger  Get it now!


------------------------
Manuel Diego Paillafil Gamboa
manuel(at)radiohead(dot)cl
Móvil: 06 - 801 60 24




In response to

Responses

pgsql-es-ayuda by date

Next:From: Fernando SiguenzaDate: 2010-07-26 15:51:51
Subject: RE: Select con valores nulos
Previous:From: Manuel DiegoDate: 2010-07-26 15:32:26
Subject: Re: copy from

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group