2016-07-22 12 views
0

["A", "B", "C"]、 配列ARRAY['A','C','D','E']と連結して、文字列["A", "B", "C", "D", "E"](繰り返し要素なしの文字列)を生成する方法は次のとおりです。postgres:配列のconcat文字列

Postgresのバージョンは9.4.8

列のデータは、ARRAY['A','C','D','E']と連結することができる方法["A", "B", "C"]またはnull、可能である(実際には文字列を指定できますが、私はそれを繰り返すことなく、既存の文字列に要素を追加する必要があります)結果の文字列は次のパターンにする必要があります。["A", "B", "C", "D", "E"]

pdoを使用してdbを代替します。

+0

あなたの例で二重引用符の役割を説明してください。 –

+0

@ErwinBrandstetter彼らはすでにデータベースに存在し、ストアの設定は、アプリケーションによって解析され、私は問題に記載されているアルゴリズムから構築された新しいもので既存の文字列を置換したい。 – helios

+0

新しい文字列に二重引用符も必要ですか?実際の文字列はどのように見えますか?文字列の中に二重引用符*を付けることはできますか?それらは常に*大文字ですか?すべての定義情報を質問に入れ、あなたのバージョンのPostgresを常に宣言してください。 –

答えて

1
SELECT array_agg(x) FROM 
    (SELECT * FROM unnest(ARRAY['A', 'B', 'C']) 
    UNION 
    SELECT * FROM unnest(ARRAY['A','C','D','E']) 
    ) a(x); 
┌─────────────┐ 
│ array_agg │ 
├─────────────┤ 
│ {D,B,E,C,A} │ 
└─────────────┘ 
(1 row) 
1

、別の文字列を配列に変換アンネスト両方と、新しいアレイを形成するために、両方の注文UNIONを取る:

SELECT ARRAY(
    SELECT * FROM unnest(ARRAY['A','C','D','E']) 
    UNION 
    SELECT * FROM unnest(string_to_array(translate('["A", "B", "C"]', '[]"', ''), ', ')) 
    ORDER BY 1 
    ); 

を私は単純なケースを続行する文字[]"を削除しました。あなたはなぜそれらを持っているか必要であるかを説明する必要があります。

ARRAY constructorは単純なケースではより高速です。