我需要從每一個行連接的所有列(未知列),將一個字符串Postgres的CONCAT所有
我想做某事是這樣的:
select concat(*) from table;
的問題是,該函數CONCAT不走參數「*」
任何人都可以幫我嗎?
實施例:
表
GID | Name
----------
1 | nameA
2 | nameB
3 | nameC
我需要輸出:
1nameA
2nameB
3nameC
我需要從每一個行連接的所有列(未知列),將一個字符串Postgres的CONCAT所有
我想做某事是這樣的:
select concat(*) from table;
的問題是,該函數CONCAT不走參數「*」
任何人都可以幫我嗎?
實施例:
表
GID | Name
----------
1 | nameA
2 | nameB
3 | nameC
我需要輸出:
1nameA
2nameB
3nameC
select rtrim(ltrim(replace(tablename::text, ',', ''), '('), ')') from tablename;
select concat(gid, user) from foo;
嘗試,如在this fiddle。
我不知道列。我想在for語句中的過程中使用此解決方案。所以我不能用作列的參數名稱。 – k2n
我會提出兩個選擇。他們都使用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}
使用第二種方法和array_to_string(array, delimiter)
功能,您可以連接所有列文本表示成一弦。只需選擇一個分隔符(例如','
,'|'
或甚至''
)。例如使用'|'
你最終的查詢:
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
希望幫助:)
這兩個建議都很好,謝謝。 – k2n
請格式化內容.. –
它的工作原理,非常感謝波蘭。 – k2n