Search Postgresql Archives

Re: Accommodating alternative column values

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/3/24 07:13, Rich Shepard wrote:
On Wed, 3 Jul 2024, David G. Johnston wrote:

Yeah, the simply cast suggested will not work. You’d have to apply an
expression that turns the current contents into an array. The current
contents are not likely to be an array literal.

David,

No, it's not now an array.

I thought that this expression would work, but it doesn't:
bustrac=# alter table people alter column email set data type varchar(64)[] using email::varchar(64)[];
RROR:  malformed array literal: "frank@xxxxxxxxx"
DETAIL:  Array value must start with "{" or dimension information.

If I correctly understand the error detail I'd need to change the contents
of that column for all 1280 rows to enclose the contents in curly braces
before I can convert the datatype to an array. Is that correct?

An example:

create table array_conv(id integer, email varchar(64));

insert into array_conv values (1, 'adrian.klaver@xxxxxxxxxxx'), (2, 'aklaver@xxxxxxxxxxx');

select * from array_conv ;
 id |           email
----+---------------------------
  1 | adrian.klaver@xxxxxxxxxxx
  2 | aklaver@xxxxxxxxxxx

alter table array_conv alter column email type varchar[] using array[email];

select * from array_conv ;
 id |            email
----+-----------------------------
  1 | {adrian.klaver@xxxxxxxxxxx}
  2 | {aklaver@xxxxxxxxxxx}

Rich



--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux