2017-08-22 5 views
1

2つの配列をANDのような演算子で比較して新しい配列を作成しようとしています。 私は2つの配列を持っている以下の例を参照してください。テンプレートはNULLとNON-NULL値(それらが何であれ、数値または文字列で、ポイントはそれらがNULLではありません)とその他データの配列。私は、テンプレート配列に私がnull以外の値がある「テンプレート」の配列(null以外の値の数に基づいて、「データ」列で埋める新しい配列を作成したいpostgres - 2つの配列のANDに基づいて新しい配列を埋める方法

SELECT ARRAY[NULL, 1, NULL, 1, 1] as template; 
SELECT ARRAY[2, 3] as data; 

かもしれません

{NULL,2,NULL,3,NULL} 

は何がこれに似た何かを行っている:結果は次のようになりますように、データ配列のものと異なっていても、塗りつぶしは、左から右へ)行く必要?

+0

より多くのサンプルデータ?..私はどこ最後の1 disapears得るいけません... –

答えて

1

通常の配列操作のための最も簡単な方法はplpgsqlが関数であり、例えば:

create or replace function fill_array_from_template(template anyarray, data anyarray) 
returns anyarray language plpgsql as $$ 
declare 
    i int; 
    n int = 1; 
begin 
    for i in 1..array_length(template, 1) loop 
     if template[i] is not null then 
      template[i] := data[n]; 
      n:= n+ 1; 
     end if; 
    end loop; 
    return template; 
end $$; 

select fill_array_from_template(array[null, 1, null, 1, 1], array[2, 3]); 

fill_array_from_template 
-------------------------- 
{NULL,2,NULL,3,NULL} 
(1 row) 
関連する問題