Thread: '' != NULL in PostGres???
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 | +----------------------------------+------------------------------+------+ ???
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
> 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
> 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