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

Problema con campos nulos

From: "Ariel" <buenasalud(at)ubbi(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Problema con campos nulos
Date: 2006-04-25 21:16:52
Message-ID: 000f01c668ad$93541570$fa5367c0@GISARIEL (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Estimados

 

Se presento un problema con el siguiente query en donde el campo
no_facturable puede tomar varios valores incluyendo nulo, como se puede
observar en el siguiente Query

 

tempo=# select no_facturable from padron group by 1;

 no_facturable

---------------

 

 NF

 BC

(3 rows)

 

Pero cuando hago las siguientes consultas me arroja valores no esperados
cuando incluyo 3 campos concectados por un and.

 

Les muestro la situacion

 

tempo=# select count(*) from padron_new where situacion <> 'BA' and
situacion <> 'BC';

 count

--------

 107350

(1 row)

 

tempo=# select count(*) from padron_new where situacion <> 'BA' and
situacion <> 'BC' and no_facturable <> 'BC';

 count

-------

   714

(1 row)

 

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable <> 'BC' or no_facturable = '');

 count

-------

   714

(1 row)

 

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable = 'NF' or no_facturable = '');

 count

-------

   714

(1 row)

 

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable = 'NF' or no_facturable is null);

 count

--------

 106939

(1 row)

 

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable <> 'BC' or no_facturable is null);

 count

--------

 106939

(1 row)

 

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable <> 'BC');

 count

-------

   714

(1 row)

 

tempo=# explain analyze select count(*) from padron_new where (situacion <>
'BA' and situacion <> 'BC') and (no_facturable <> 'BC');

                                                       QUERY PLAN

----------------------------------------------------------------------------
--------------------------------------------

 Aggregate  (cost=20120.29..20120.29 rows=1 width=0) (actual
time=468.000..468.000 rows=1 loops=1)

   ->  Seq Scan on padron_new1  (cost=0.00..19853.72 rows=106624 width=0)
(actual time=0.000..468.000 rows=714 loops=1)

         Filter: ((situacion <> 'BA'::bpchar) AND (situacion <>
'BC'::bpchar) AND ((val_atr_22)::text <> 'BC'::text))

 Total runtime: 468.000 ms

(4 rows)

 

 

El valor correcto es de 106939, la pregunta es ¬Ņdebo incluir expl√≠citamente
que el campo no_facturable sea nulo? Esto esta bien?

 

Si alguien me puede aclarar un poco lo que ocurre se lo agradezco, porque me
dejo un poco confundido.

 

Muchas gracias 

 

 

Ariel Tavella

Area GIS

 

 

 

pgsql-es-ayuda by date

Next:From: Fernanda FueltalaDate: 2006-04-25 21:39:23
Subject: RV:Server doesn't listen
Previous:From: Julio RiveroDate: 2006-04-25 21:13:18
Subject: Re: Server doesn't listen

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