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数据库如何用update批量更新某列数据中的字段
我在 oracle sql 中的左连接没有返回左表的每个元素