相当于 Oracle 9i 中的 PostgreSQL array()/array_to_string

Equivalent to PostgreSQL array() / array_to_string() functions in Oracle 9i(相当于 Oracle 9i 中的 PostgreSQL array()/array_to_string() 函数)
本文介绍了相当于 Oracle 9i 中的 PostgreSQL array()/array_to_string() 函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望从在 Oracle 中返回多行的查询中返回带有逗号分隔值列表的单行,实质上是将返回的行展平为单行.

I'm hoping to return a single row with a comma separated list of values from a query that returns multiple rows in Oracle, essentially flattening the returned rows into a single row.

在 PostgreSQL 中,这可以使用数组和 array_to_string 函数来实现,如下所示:

In PostgreSQL this can be achieved using the array and array_to_string functions like this:

给定表人":

id | name
---------
1  | bob
2  | alice
3  | jon

SQL:

select array_to_string(array(select name from people), ',') as names;

将返回:

names
-------------
bob,alice,jon

如何在 Oracle 9i 中获得相同的结果?

How would I achieve the same result in Oracle 9i?

谢谢,

马特

推荐答案

Tim Hall 拥有 Oracle 中的字符串聚合技术.

Tim Hall has the definitive collection of string aggregation techniques in Oracle.

如果您坚持使用 9i,我个人的偏好是定义一个自定义聚合(该页面上有 string_agg 的实现),这样您就可以

If you're stuck on 9i, my personal preference would be to define a custom aggregate (there is an implementation of string_agg on that page) such that you would have

SELECT string_agg( name )
  FROM people

但是你必须定义一个新的 STRING_AGG 函数.如果您需要避免创建新对象,还有其他方法,但在 9i 中它们会比 PostgreSQL 语法更混乱.

But you have to define a new STRING_AGG function. If you need to avoid creating new objects, there are other approaches but in 9i they're going to be messier than the PostgreSQL syntax.

这篇关于相当于 Oracle 9i 中的 PostgreSQL array()/array_to_string() 函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

SQL to Generate Periodic Snapshots from Transactions Table(用于从事务表生成定期快照的SQL)
MyBatis support for multiple databases(MyBatis支持多个数据库)
Oracle 12c SQL: Missing column Headers in result(Oracle 12c SQL:结果中缺少列标题)
SQL query to find the number of customers who shopped for 3 consecutive days in month of January 2020(查询2020年1月连续购物3天的客户数量)
How to get top 10 data weekly (This week, Previous week, Last month, 2 months ago, 3 month ago)(如何每周获取前十大数据(本周、前一周、上个月、2个月前、3个月前))
Select the latest record for an Id per day - Oracle pl sql(选择每天ID的最新记录-Oracle pl SQL)