From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Jon Lapham <lapham(at)extracta(dot)com(dot)br> |
Cc: | Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: How to cast a char[] to varchar? |
Date: | 2002-01-07 18:50:16 |
Message-ID: | 10125.1010429416@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Jon Lapham <lapham(at)extracta(dot)com(dot)br> writes:
> I have a column defined as "char(3)[]" which I would like to copy into a
> different column defined as "varchar(255)".
> PS: It would be fine if the things in "cat2" contained the braces and
> quotes, it does not need to be cleaned-up.
You're going to need to do a little programming. plpgsql provides about
the simplest solution, as it will happily try to convert anything to
anything else (if it can out-convert the source value to text and then
in-convert to the destination type without error, it's happy). So:
regression=# create function to_varchar(char[]) returns varchar as '
regression'# begin
regression'# return $1;
regression'# end;' language 'plpgsql';
CREATE
regression=# create table foo (f1 char(3)[]);
CREATE
regression=# insert into foo values ('{"col","dep"}');
INSERT 299666 1
regression=# insert into foo values ('{"fee","fi", "fo","fum"}');
INSERT 299667 1
regression=# select f1, to_varchar(f1) from foo;
f1 | to_varchar
-----------------------+-----------------------
{col,dep} | {col,dep}
{fee,"fi ","fo ",fum} | {fee,"fi ","fo ",fum}
(2 rows)
If you wanted to be smarter --- like, say, getting rid of the braces and
so on --- you could code the conversion routine in pltcl or plperl,
either of which provide much better text-mashing capability than plpgsql
does. I seem to recall that pltcl supports Postgres arrays better than
either of the others do, so it might be the best bet for this
particular task.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Ian Harding | 2002-01-07 18:54:48 | Re: 7.2 changes to varchar truncation |
Previous Message | Campano, Troy | 2002-01-07 18:40:48 | Re: Restart postgres in php as nobody |