Re: Select con valores nulos

From: Guillermo Villanueva <guillermovil(at)gmail(dot)com>
To: Fernando Siguenza <fsigu(at)hotmail(dot)com>
Cc: manuel(at)radiohead(dot)cl, Foro Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Select con valores nulos
Date: 2010-07-26 23:53:53
Message-ID: AANLkTim1NeU-8=Y2WqKc=psC54==+M=GOstTnmkqUCOX@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Una de las formas que utilizo yo es :
select * from tabla
where
campo1 = coalesce(param1,campo1) and
campo2 = coalesce(param2, campo2) and
......
Saludos

~~~~~~~~~~~~~~~~
Guillermo Villanueva

El 26 de julio de 2010 12:51, Fernando Siguenza <fsigu(at)hotmail(dot)com>escribió:

> Gracias amigo si justamente hago la comparacion de los valores en la
> aplicacion, pero programo en punto net, y ahi tengo que ir agregando
> parametros por cada campo, lo cual se lo puede hacer con varios if, y se
> escribe demasiado codigo para ya enviar el select que necesito, y como en
> mysql lo resolvi de una forma rapida conel select que les indique
> anteriormente, pense que con postgre lo podia hacer de igual forma.
>
> Saludos
>
>
> ------------------------------
> 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:42:31 -0400
>
>
> 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!<http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline>
>
>
>
> ------------------------
> *Manuel Diego Paillafil Gamboa*
> manuel(at)radiohead(dot)cl
>
>
>
>
> ------------------------------
> Connect to the next generation of MSN Messenger Get it now!<http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline>
>
>
>
> ------------------------
> *Manuel Diego Paillafil Gamboa*
> manuel(at)radiohead(dot)cl
> Móvil: 06 - 801 60 24
>
>
>
>
>
> ------------------------------
> Explore the seven wonders of the world Learn more!<http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Sileone 2010-07-27 13:52:59 Re: Cuantos locks son muchos locks?
Previous Message Roberto A. 2010-07-26 19:43:45 Insertar image en un campo bytea???