Oracle sql - 连接所有列

Posted

技术标签:

【中文标题】Oracle sql - 连接所有列【英文标题】:Oracle sql - concatenate all columns 【发布时间】:2014-04-11 15:11:50 【问题描述】:

我有一个包含 30 多列的表格。想追加所有的列数据。

我目前在 Oracle 中使用多个连接运算符来实现这一点。

示例: SELECT C1.data || '' || C2.data ||..........Cm.data FROM C

有没有其他方法可以不使用'||' - 多次连接运算符?我想使用查询来实现这一点。 (对使用任何语言的后期处理不感兴趣)任何帮助都会有很大帮助。

【问题讨论】:

concat() 怎么样?当然行为是一样的.. 使用 concat() 可以省去使用多个 '||' 的痛苦运营商。有没有其他方法可以在不指定所有列名的情况下连接表中的所有列(因为我们将连接该表中的所有列)? 一旦您选择了数据,您将如何处理它?如果您改变方法,“不必多次使用 || 运算符...”的“问题”可能会消失。 CONCAT 只支持两个参数,所以它会让一切变得更糟。 我在一个在线 SQL 工具中进行查询。将结果用于数据分析。 【参考方案1】:

试试这样的。无论如何,你会提到你需要的所有列。

declare
stmt varchar2(300);
v_char char(10):=',||" "||,';
begin
stmt:='select 1,2,3,4 from tab';
dbms_output.put_line(stmt);
select replace(stmt,',',v_char) into stmt from dual;
dbms_output.put_line(stmt);
execute immediate stmt; // you can add this after verifying your query 
 end;

输出:

select 1,||" "||, 2,||" "||, 3,||" "||, 4 from tab;

【讨论】:

以上是关于Oracle sql - 连接所有列的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL 在 2 个条件下连接列

oracle数据库如何用update批量更新某列数据中的字段

我在 oracle sql 中的左连接没有返回左表的每个元素

oracle数据库如何用update批量更新某列数据中的字段

Oracle_SQL92_连接查询

尝试在 Oracle SQL 中取消透视列时出错