Обсуждение: Function to ADD a value into each column of real[]

Поиск
Список
Период
Сортировка

Function to ADD a value into each column of real[]

От
orehon
Дата:
Hello,
 if I have this table:
 CREATE TABLE teste (
id     integer,
picos   real[],
);

and insert this values:
INSERT INTO teste VALUES(1, '{{1,2,3},{1,2,3},{1,2,3},{1,2,3},
{1,2,3}}');
INSERT INTO teste VALUES(2, '{{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3},
{1,2,3},{1,2,3}}');
INSERT INTO teste VALUES(3, '{{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3},
{1,2,3},{1,2,3},{1,2,3}}');
INSERT INTO teste VALUES(4, '{{1,2,3},{1,2,3},{1,2,3}}');

I need to write a function to return all the record of this table and
add a 0 in the begin of each array.
Ex.:

1, {{0,1,2,3},{0,1,2,3},{0,1,2,3},{0,1,2,3},{0,1,2,3}}
.............

How can I do that?
Any idea?!


Re: Function to ADD a value into each column of real[]

От
Jim Nasby
Дата:
On Jul 10, 2007, at 2:38 PM, orehon wrote:
> Hello,
>  if I have this table:
>  CREATE TABLE teste (
> id     integer,
> picos   real[],
> );
>
> and insert this values:
> INSERT INTO teste VALUES(1, '{{1,2,3},{1,2,3},{1,2,3},{1,2,3},
> {1,2,3}}');
> INSERT INTO teste VALUES(2, '{{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3},
> {1,2,3},{1,2,3}}');
> INSERT INTO teste VALUES(3, '{{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3},
> {1,2,3},{1,2,3},{1,2,3}}');
> INSERT INTO teste VALUES(4, '{{1,2,3},{1,2,3},{1,2,3}}');
>
> I need to write a function to return all the record of this table and
> add a 0 in the begin of each array.
> Ex.:
>
> 1, {{0,1,2,3},{0,1,2,3},{0,1,2,3},{0,1,2,3},{0,1,2,3}}
> .............

You'll need something like...
FOR i IN array_lower(array, 1) .. array_upper(array, 1)
    array[i] := 0 || array[i];
END

You might need some special logic to handle either the second pass
through the loop if this ends up giving you a single-dimension array.
--
Jim Nasby                                            jim@nasby.net
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)