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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Siguenza 2010-07-26 15:51:51 RE: Select con valores nulos
Previous Message Manuel Diego 2010-07-26 15:32:26 Re: copy from