【问题标题】:concat result of sql query using field seperator [duplicate]使用字段分隔符连接sql查询的结果[重复]
【发布时间】:2015-07-09 07:34:45
【问题描述】:

我有一个问题:

SELECT *  FROM (SELECT col1,col2,col3,ROWNUM R 
                FROM TBL WHERE  ROWNUM < 3) 
          WHERE R='2';

(rownum 每次都会改变一次只给出一条记录)

column1      column2       column3
alpha         beta          gamma

我需要结果为:

alpha,beta,gamma

我需要做的就是在输出之间使用字段分隔符。

这与下面的建议链接无关,并且不是重复的!

【问题讨论】:

  • 看看here
  • 但我认为 LISTAGG 正在返回单列的结果,而这个问题有单独的列
  • 不,这不是 LISTAGG 主题的副本。 OP 要求字符串连接而不是字符串聚合。我正在重新打开它。
  • @LalitKumarB:虽然 OP 将其标记为重复...
  • @Qantas94Heavy 这很奇怪,因为 OP 将我的答案标记为已回答,然后接受该主题与完全不同的主题重复。我明白为什么机器人用户将其标记为重复。

标签: sql oracle oracle11g


【解决方案1】:

有两种方式:

CONCAT函数

SELECT *
FROM
  (SELECT concat(concat(concat(concat('a', ','), col2), ','), col3),
    ROWNUM R
  FROM TBL
  WHERE ROWNUM < 3
  )
WHERE R=2;

|| 连接运算符

SELECT *
FROM
  (SELECT col1||','||col2||','||col3,ROWNUM R FROM TBL WHERE ROWNUM < 3
  )
WHERE R=2;

另外一点,ROWNUM 的值不需要用单引号括起来,它不必要地将其转换为 string,只需将其保留为 NUMBER >.

【讨论】:

    【解决方案2】:

    如果LISTAGG 不是您正在寻找的,那么DUMMYCOL 可能会有所帮助。--

       SELECT *
    FROM
      (SELECT col1,
        ','AS DUMMYCOL,
        col2,
        ','AS DUMMYCOL,
        col3,
        ROWNUM R
      FROM TBL
      WHERE ROWNUM < 3
      )
    WHERE R='2';
    

    【讨论】:

      【解决方案3】:

      您可以使用以下内容:-

      SELECT *  
      FROM (SELECT col1||','||col2||','||col3,ROWNUM R 
            FROM TBL WHERE  ROWNUM < 3) 
      WHERE R='2';
      

      【讨论】:

        猜你喜欢
        • 2011-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 2011-10-10
        • 2011-01-21
        • 2013-09-13
        相关资源
        最近更新 更多