Re: [SQL] VARCHAR(50), CHAR(50) or TEXT ?

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: henrik(at)steffen(dot)stade(dot)net, pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] VARCHAR(50), CHAR(50) or TEXT ?
Date: 1999-05-13 16:07:58
Message-ID: 199905131607.MAA16686@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

> Henrik Steffen <webmaster(at)city-map(dot)de> writes:
> > But, what is the difference between VARCHAR and TEXT ?
>
> Almost none. VARCHAR won't let you go beyond the stated maximum length,
> whereas TEXT has no specific upper limit. Otherwise they are stored
> in exactly the same way. (At least in Postgres ... dunno about other
> DBMSs.)
>
> I'd be inclined to use TEXT unless the maximum length were really an
> important part of the semantics of the data for my application. If
> you find yourself saying "Well, I *think* it'll never go beyond N
> characters, but maybe I should add a little slop for safety" then
> I'd say forget all about VARCHAR and use TEXT. If you find yourself
> saying "it *had better not* go beyond N characters, because that
> app over there will crash if it does" then use VARCHAR to enforce the
> limit.

Don't forget, char() has a performance benefit over varchar()/text.
varchar() allows you to document/clip a field to a specific lenght.
Some people like that for fixed-type fields, like "A" for active, "R"
for retired. char(1) documents it is only on character too. See the
FAQ for info on this.

--
Bruce Momjian | http://www.op.net/~candle
maillist(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 1999-05-14 00:14:26 Re: [SQL] JOIN index/sequential select problem
Previous Message Tom Lane 1999-05-13 14:11:32 Re: [SQL] VARCHAR(50), CHAR(50) or TEXT ?