No title

Started by News Subsystemover 13 years ago2 messagesgeneral
Jump to latest
#1News Subsystem
news@news.hub.org

Tue, 18 Dec 2012 15:15:41 -0800 (PST)
Received: by 10.50.5.174 with SMTP id t14mr1993997igt.11.1355872541437; Tue,
18 Dec 2012 15:15:41 -0800 (PST)
X-Newsgroups: pgsql.general
Date: Tue, 18 Dec 2012 15:15:41 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=67.217.89.1; posting-account=lOEuBgoAAAD6Qw4dpoqeBAJHKoD58tcK
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6087737c-f946-4698-92f0-3ea72a56aa2b@googlegroups.com>
Subject: question about varchar
From: Rui Li <rui.vapps@gmail.com>
Injection-Date: Tue, 18 Dec 2012 23:15:41 +0000
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
To: pgsql-general@postgresql.org

In postgresql, we can create column as =93varchar(n)=94 where n is the size=
of the char, or we can just define column as =93varchar=94
rli=3D# CREATE TABLE test (v1 varchar(100), v2 varchar);
CREATE TABLE
rli=3D# \d test
Table "public.test"
Column | Type | Modifiers
--------+------------------------+-----------
v1 | character varying(100) |
v2 | character varying |

so my question is: why should we even declare character varying(n) in postg=
resql when there=92s an easier options to declaring character varying (with=
out n)=20
is there any performance different between it? or some other reason we shou=
ld use varchar(n) instead of just varchar?

thanks for any help

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#2Gavan Schneider
pg-gts@snkmail.com
In reply to: News Subsystem (#1)
Re: question about varchar

On Tuesday, December 18, 2012 at 10:15, Rui Li wrote:
/*
** text 'cleaned' to remove message digest cruft
** apologies for any errors
*/

In postgresql, we can create column as varchar(n)=94 where n is the
sizeof the char, or we can just define column as varchar=94
rli=3D# CREATE TABLE test (v1 varchar(100), v2 varchar);
CREATE TABLE
rli=3D# \d test
Table "public.test"
Column | Type | Modifiers
--------+------------------------+-----------
v1 | character varying(100) |
v2 | character varying |

so my question is: why should we even declare character varying(n) in
postgresql when there's an easier options to declaring character
varying (without n) is there any performance different between it? or
some other reason we should use varchar(n) instead of just varchar?

thanks for any help

The short answer seems to be: just use text, e.g.,
CREATE TABLE test (v1 text, v2 text);
and, only go to varchar(n) if there is a very special need.

Lots of good reasons to not use char(n) if you cannot guarantee
to fill the field every time (otherwise those right filled blank
padding characters will just cause problems).

There is no speed performance difference between them, but lots
of design advantages in favour of text (it's much more 'future proof').

These ideas are much better explained, and tested here:
<http://www.depesz.com/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/&gt;

Regards
Gavan Schneider

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general