Re: Coalesce 2 Arrays

From: Rob Sargent <robjsargent(at)gmail(dot)com>
To: Alex Magnum <magnum11200(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Coalesce 2 Arrays
Date: 2019-06-24 23:12:10
Message-ID: 95e3bdde-24e4-e09e-021b-2d83015b243b@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On 6/24/19 4:46 PM, Alex Magnum wrote:
> Yes, they are.
>
> On Tue, Jun 25, 2019 at 4:33 AM Rob Sargent <robjsargent(at)gmail(dot)com
> <mailto:robjsargent(at)gmail(dot)com>> wrote:
>
>
>
>> On Jun 24, 2019, at 2:31 PM, Alex Magnum <magnum11200(at)gmail(dot)com
>> <mailto:magnum11200(at)gmail(dot)com>> wrote:
>>
>> Hi,
>> I have two arrays which I need to combine based on the individual
>> values;
>> i could do a coalesce for each field but was wondering if there
>> is an easier way
>>
>> array_a{a,  null,c,   d,null,f,null}  primary
>> array_b{null,2  ,null,4,5   ,6,null}  secondary
>>
>> result {a,  2,   c,   d,5,   f,null)
>>
>> Any advice would be appreciated
>>
> Are the inputs always of fixed dimensions eg. 1 by 7?
>
create or replace function tt( a1 int[], a2 int[])
returns int[] as $$
declare
        aret int[];
        asize int;
begin
     select array_length(a1,1) into asize;
     for i in 1..asize loop
          aret[i] = coalesce(a1[i], a2[i]);
     end loop;
     return aret;
end;

$$ language plpgsql;

select * from tt(array[3,null], array[null,4]);
  tt
-------
 {3,4}
(1 row)

In response to

Browse pgsql-general by date

  From Date Subject
Next Message David G. Johnston 2019-06-24 23:19:11 Re: Coalesce 2 Arrays
Previous Message Rob Sargent 2019-06-24 23:11:46 Re: Coalesce 2 Arrays