Thread: Questions about "varchar" NOT NULL default = char(1) ?

Questions about "varchar" NOT NULL default = char(1) ?

From
Emi Lu
Date:
Greetings,

If one column "col1" is defined as :

col1 varchar(1) not null default ''

Does it means that col1's definition is equal to

col1 char(1) not null default ''


Put it another way, will char '' be saved as char(1) or char '' does not
use space at all?

Thanks a lot,
Emi

Re: Questions about "varchar" NOT NULL default = char(1)

From
Neil Conway
Date:
Emi Lu wrote:
> Greetings,
>
> If one column "col1" is defined as :
>
> col1 varchar(1) not null default ''
>
> Does it means that col1's definition is equal to
>
> col1 char(1) not null default ''

Not quite; for example,

neilc=# create table t1 (x char(1) not null);
CREATE TABLE
neilc=# create table t2 (x varchar(1) not null);
CREATE TABLE
neilc=# insert into t1 values ('');
INSERT 0 1
neilc=# insert into t2 values ('');
INSERT 0 1
neilc=# select octet_length(x) from t1;
  octet_length
--------------
             1
(1 row)

neilc=# select octet_length(x) from t2;
  octet_length
--------------
             0
(1 row)

> Put it another way, will char '' be saved as char(1) or char '' does not
> use space at all?

I'm not sure what you mean.

-Neil