【问题标题】:Oracle query to concat comma separated column valuesOracle查询连接逗号分隔的列值
【发布时间】:2020-09-14 09:44:09
【问题描述】:

我有一个表员工,其中包含名称、年龄、部门等列。

我需要一个查询,它产生的输出将 Name 、 Age 、 Department 的 concat 值以逗号分隔。

查询输出应如下所示:

ABC,23,Science
XYZ,34,Bio
QQQ,22,Account

我没有使用存储过程。

我在互联网上搜索并找到了 concat 函数,但看起来它不适用于多个列。请帮助考虑我在表中有 1-5 百万条记录,因此还需要查看性能点。

【问题讨论】:

    标签: sql oracle oracle11g string-concatenation


    【解决方案1】:

    CONCAT 在这种情况下表现不佳,因为您必须嵌套多个函数。但是,旧的双管道连接运算符 || 运行良好:

    SQL> select ename ||','|| sal ||','|| job result
      2  from emp
      3  where rownum < 5;
    
    RESULT
    ---------------------------------------------------
    SMITH,1000,CLERK
    ALLEN,1600,SALESMAN
    WARD,1250,SALESMAN
    JONES,2975,MANAGER
    
    SQL>
    

    【讨论】:

    • 谢谢。如果我有 100 万条记录,性能的观点如何……有什么想法吗?
    • 这取决于你想用那么多行做什么。如果要将结果存储到某个表中,则需要一些时间(不是因为串联,而是因为数据量)。如果您要运行查询并在结果经过时盯着屏幕,则可能需要更长的时间,因为 标准输出 很慢。正如我所说:这不是关于连接,而是关于数据量。
    猜你喜欢
    • 2015-03-25
    • 2019-05-23
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多