我需要将每一行的所有列(未知列)连接到一个字符串
我想做这样的事情:
select concat(*) from table;
问题是函数 concat 不带参数“*”
任何人都可以帮助我吗?
例子:
桌子
GID | Name
----------
1 | nameA
2 | nameB
3 | nameC
我需要输出:
1nameA
2nameB
3nameC
我需要将每一行的所有列(未知列)连接到一个字符串
我想做这样的事情:
select concat(*) from table;
问题是函数 concat 不带参数“*”
任何人都可以帮助我吗?
例子:
桌子
GID | Name
----------
1 | nameA
2 | nameB
3 | nameC
我需要输出:
1nameA
2nameB
3nameC
select rtrim(ltrim(replace(tablename::text, ',', ''), '('), ')') from tablename;
我会提出两种选择。他们都使用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
希望有帮助:)
试试select concat(gid, user) from foo;
,就像在这个小提琴中一样。