Thread: '' != NULL in PostGres???

'' != NULL in PostGres???

From
Neil Harkins
Date:
Hello. I am experimenting with Postgresql-6.3.2 on a RedHat 5.1 DEC Alpha:

nuacct=> create table users (
nuacct->  recno int,
nuacct->  custid int unique,
nuacct->  username char(14) not null,
nuacct->  service int
nuacct-> );
NOTICE:  CREATE TABLE/UNIQUE will create implicit index users_custid_key
for table users
CREATE

nuacct=> insert into users values
nuacct-> ( 0, 0, '', 0 );
INSERT 18241 1


??? Shouldn't that have failed, generating an error ???


nuacct=> select * from users where username is null;
recno|custid|username|service
-----+------+--------+-------
(0 rows)

nuacct=> select * from users where username = '';
recno|custid|      username|service
-----+------+--------------+-------
    0|     0|              |      0
(1 row)

nuacct=> \d users
Table    = users
+----------------------------------+------------------------------+------+
|              Field               |              Type            |Length|
+----------------------------------+------------------------------+------+
| recno                            | int4                         |4     |
| custid                           | int4                         |4     |
| username                         | char() not null              |14    |
| service                          | int4                         |4     |
+----------------------------------+------------------------------+------+

???


Re: [SQL] '' != NULL in PostGres???

From
Brook Milligan
Date:
   nuacct=> create table users (
   nuacct->  recno int,
   nuacct->  custid int unique,
   nuacct->  username char(14) not null,
   nuacct->  service int
   nuacct-> );

   nuacct=> insert into users values
   nuacct-> ( 0, 0, '', 0 );
   INSERT 18241 1

   ??? Shouldn't that have failed, generating an error ???

No, but this will:

   nuacct=> insert into users values ( 0, 0, null, 0 );

'' is a zero length string not a null.

Cheers,
Brook

Re: [SQL] '' != NULL in PostGres???

From
Colin Dick
Date:
>    nuacct=> create table users (
>    nuacct->  recno int,
>    nuacct->  custid int unique,
>    nuacct->  username char(14) not null,
>    nuacct->  service int
>    nuacct-> );
>
>    nuacct=> insert into users values
>    nuacct-> ( 0, 0, '', 0 );
>    INSERT 18241 1
>
>    ??? Shouldn't that have failed, generating an error ???
>
> No, but this will:
>
>    nuacct=> insert into users values ( 0, 0, null, 0 );
>
> '' is a zero length string not a null.

I wonder,
    Would

insert into users (recno, custid, service) values (0, 0, 0);

also fail?  As far as I can tell, if you don't expressly populate the
field, it will remain as a null....

--
Colin Dick
On Call Internet Services
cdick@mail.ocis.net




Re: [SQL] '' != NULL in PostGres???

From
James Olin Oden
Date:


> I wonder,
>         Would
>
> insert into users (recno, custid, service) values (0, 0, 0);
>
> also fail?  As far as I can tell, if you don't expressly populate the
> field, it will remain as a null....

I believe that would should fail unless he has set some sort of default
value for the field...james