1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

以下的文章是通过Oracle字段转字符串以及其多行记录合并/连接/聚合字符串的几种常用方法的具体操作,如果你对其相关的实际操作有兴趣的话,你就可以对以下的文章点击观看了。

怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。

什么是合并多行字符串(连接字符串)呢,例如:

SQL>desctest; 
NameTypeNullableDefaultComments 
COUNTRYVARCHAR2(20)Y 
CITYVARCHAR2(20)Y 
SQL>select*fromtest; 
COUNTRYCITY 

中国 台北

中国 香港

中国 上海

日本 东京

日本 大阪

要求得到如下结果集:

中国 台北,香港,上海

日本 东京,大阪

实际就是对字符实现一个聚合功能,我很奇怪为什么Oracle没有提供官方的聚合函数来实现它呢:)

下面就对几种经常提及的解决方案进行分析

1.被集合Oracle字段范围小且固定型

这种方法的原理在于你已经知道CITY字段的值有几种,且还不算太多,如果太多这个SQL就会相当的

长。看例子:

SQL> select t.country,

2 MAX(decode(t.city,’台北’,t.city||’,’,NULL)) ||

3 MAX(decode(t.city,’香港’,t.city||’,’,NULL))||

4 MAX(decode(t.city,’上海’,t.city||’,’,NULL))||

5 MAX(decode(t.city,’东京’,t.city||’,’,NULL))||

6 MAX(decode(t.city,’大阪’,t.city||’,’,NULL))

7 from test t GROUP BY t.country

8 /

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11573.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。