Re: Comparar valores Nulos

From: "Silvio Quadri" <silvioq(at)gmail(dot)com>
To: "Cesar Erices" <caerices(at)gmail(dot)com>
Cc: postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Comparar valores Nulos
Date: 2008-01-18 20:19:45
Message-ID: 61dc71dc0801181219i6f219db6lb443a2d3c38bc889@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 18/01/08, Cesar Erices <caerices(at)gmail(dot)com> escribió:
>
> Disculpa, lo que pasa que estoy en el trabajo y estoy algo confundido,
> pero pudiste probar con eso?, te resulta?

No es necesario probarlo. campo != null o campo = null no funciona nunca en
ninguna base de datos salvo configuraciones especiales. El ANSI SQL lo
especifica así.

La forma correcta es campo is not null o campo is null.

A veces te pasa que estas comparando dos campos de dos tablas y mandas
tabla1.campoA = tabla2.campoB

si tabla1.campoA es nulo o tabla2.campoB la comparacion da falso. Si ambos
son nulos, lo mismo, falso. Hacé la prueba null = null que comentaba en los
otros mails y fijate. Hacela en MYSQL vas a ver que da lo mismo.

Igual, el que inició el hilo no fui yo, je! Yo recomiendo que use case o
coalesce si las tablas no son muy grandes.

Saludos,
Silvio

El día 18/01/08, Silvio Quadri <silvioq(at)gmail(dot)com> escribió:
> >
> >
> > El día 18/01/08, Cesar Erices <caerices(at)gmail(dot)com > escribió:
> > >
> > > Probaste consultando por select * from tabla where campo<> null
> >
> >
> > Ojo. No lo mandaste a la lista !
> >
> > Cuidado
> > select * from tabla where campo != null no funciona
> > La forma correcta es
> > select * from tabla where campo is not null
> >
> > Silvio
> >
> >
> > El día 18/01/08, Silvio Quadri <silvioq(at)gmail(dot)com > escribió:
> > > >
> > > >
> > > >
> > > > El día 18/01/08, Consuelo Marmolejo < consuelo_marmolejo(at)hotmail(dot)com>
> > > > escribió:
> > > > >
> > > > >
> > > > > Que tal.
> > > > > Dentro de postgres no puedo comparar los valores nulos dentro de
> > > > > mis tablas; me explico con este ejemplo:
> > > > >
> > > > > Digamos que tenemos estas tablas:
> > > > >
> > > > > -- Tabla1 --
> > > > > id_tabla1 | nombre | profesion | color
> > > > > -----------+---------+---------------+---------
> > > > > 1 | Miguel | | Azul
> > > > > 2 | Alvaro | Análista |
> > > > > 3 | Jorge | Administrador | Rojo
> > > > > 4 | Roberto | | Violeta
> > > > > 5 | Miriam | Secretaria |
> > > > >
> > > > > -- Tabla2 --
> > > > > id_tabla2 | nombre | profesion | color
> > > > > -----------+---------+---------------+---------
> > > > > 5 | Miguel | | Azul
> > > > > 4 | Alvaro | Análista |
> > > > > 2 | Jorge | Administrador | Rojo
> > > > > 1 | Roberto | | Violeta
> > > > > 3 | Miriam | Secretaria |
> > > > >
> > > > > (Los espacios en blanco son valores NULL dentro de la tabla).
> > > > > Ahora si pueden observar lo único que cambia son los id's dentro
> > > > > de ambas tablas; al hacer la consulta:
> > > > >
> > > > > db_local2=# SELECT id_tabla1, id_tabla2, nombre, profesion, color
> > > > > FROM tabla1 INNER JOIN tabla2 USING(nombre, profesion, color);
> > > > >
> > > > > id_tabla1 | id_tabla2 | nombre | profesion | color
> > > > > -----------+-----------+--------+--------------------+-------
> > > > > 3 | 2 | Jorge | Administrador | Rojo
> > > > >
> > > > >
> > > > > El único resultado que trae es este.
> > > > > Si bien puedo hacer un "CASE" para columna que tentativamente
> > > > > tenga un valor nulo; no hay una forma más práctica?
> > > > > Alguna forma de hacer que postgres me tome en consideración los
> > > > > valores Nulos, para obtener este resultado:
> > > > >
> > > > > id_tabla1 | id_tabla2 | nombre | profesion | color
> > > > > -----------+-----------+----------+--------------------+---------
> > > > > 1 | 5 | Miguel
> > > > > | | Azul
> > > > > 2 | 4 | Alvaro | Análista |
> > > > > 3 | 2 | Jorge | Administrador | Rojo
> > > > > 4 | 1 | Roberto
> > > > > | | Violeta
> > > > > 5 | 3 | Miriam | Secretaria |
> > > > >
> > > > >
> > > > >
> > > > > _________________________________________________________________
> > > > > ¡Súper premios en nanometrajes subiendo tu video!
> > > > > http://cine.prodigymsn.com/nanometraje--
> > > > > TIP 10: no uses HTML en tu pregunta, seguro que quien responda no
> > > > > podrá leerlo
> > > > >
> > > >
> > > >
> > > > Lamentablemente según las especificaciones del SQL, null = null te
> > > > va a dar siempre falso. Tenés que usar null is null.
> > > >
> > > > Hacé esta prueba ...
> > > >
> > > > # select null = null;
> > > > ?column?
> > > > ----------
> > > >
> > > > (1 row)
> > > >
> > > > # select null is null;
> > > > ?column?
> > > > ----------
> > > > t
> > > > (1 row)
> > > >
> > > >
> > > > Silvio
> > > >
> > > >
> > > >
> > > > --
> > > > Silvio Quadri
> > >
> > >
> > >
> > >
> > > --
> > > Cesar Erices Vergara
> > > Ingeniero en Gestión Informática
> > > Analista de Sistema
> >
> >
> >
> >
> > --
> > Silvio Quadri
>
>
>
>
> --
> Cesar Erices Vergara
> Ingeniero en Gestión Informática
> Analista de Sistema
>

--
Silvio Quadri

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2008-01-18 21:31:54 Re: Comparar valores Nulos
Previous Message Consuelo Marmolejo 2008-01-18 20:09:44 RE: Comparar valores Nulos