すべての行のすべての列 (不明な列) を 1 つの文字列に接続する必要があります
私はこのようにしたい:
select concat(*) from table;
問題は、関数 concat がパラメーター「*」を取らないことです。
誰でも私を助けることができますか?
例:
テーブル
GID | Name
----------
1 | nameA
2 | nameB
3 | nameC
出力が必要です:
1nameA
2nameB
3nameC
すべての行のすべての列 (不明な列) を 1 つの文字列に接続する必要があります
私はこのようにしたい:
select concat(*) from table;
問題は、関数 concat がパラメーター「*」を取らないことです。
誰でも私を助けることができますか?
例:
テーブル
GID | Name
----------
1 | nameA
2 | nameB
3 | nameC
出力が必要です:
1nameA
2nameB
3nameC
select rtrim(ltrim(replace(tablename::text, ',', ''), '('), ')') from tablename;
2つのオプションを提案します。table_row to text
どちらもテクニックを使って仕事をしています。
クイック&ダーティ:
select r::text from some_table AS r
出力例:
(289,310,,2010-09-10,6,0,1,6,0,30514,6,882,8,4,1,7,2,2,3,1,2,2,2,1,2,2,2,,1,51,0,0,0,0,0,1386,1,1,,6,,0,,,010100002082080000B3EA73156DA25C411E85EB61CB155641)
データを操作する可能性のあるクイック:
select translate(string_to_array(r::text, ',')::text, '()', '')::text[] from some_table AS r
text[]
これは、任意の配列関数を適用できるテキストの実際の配列 ( ) を返します:)
サンプル出力 (括弧の開始と終了のタイプに注意してください):
{289,310,"",2010-09-10,6,0,1,6,0,30514,6,882,8,4,1,7,2,2,3,1,2,2,2,1,2,2,2,"",1,51,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1386,1,1,"",6,"",0,"","",010100002082080000B3EA73156DA25C411E85EB61CB155641}
2 番目のアプローチとarray_to_string(array, delimiter)
関数を使用すると、すべての列のテキスト表現を 1 つの文字列に連結できます。区切り文字を選択するだけです (例: ','
、'|'
または''
)。たとえば'|'
、次のクエリを使用すると、次のようになります。
select array_to_string(translate(string_to_array(r::text, ',')::text, '()', '')::text[], '|') from some_table AS r
サンプル出力:
289|310||2010-09-10|6|0|1|6|0|30514|6|882|8|4|1|7|2|2|3|1|2|2|2|1|2|2|2||1|51|0|0|0|0|0|0|0|1|0|0|0|0|0|0|0|2|0|0|0|0|0|0|0|1|0|0|0|0|0|0|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1386|1|1||6||0|||010100002082080000B3EA73156DA25C411E85EB61CB155641
それが役立つことを願っています:)
このフィドルselect concat(gid, user) from foo;
のように試してみてください。