以下的文章是通过Oracle字段转字符串以及其多行记录合并/连接/聚合字符串的几种常用方法的具体操作,如果你对其相关的实际操作有兴趣的话,你就可以对以下的文章点击观看了。
怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。
什么是合并多行字符串(连接字符串)呢,例如:
中国 台北
中国 香港
中国 上海
日本 东京
日本 大阪
要求得到如下结果集:
中国 台北,香港,上海
日本 东京,大阪
实际就是对字符实现一个聚合功能,我很奇怪为什么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

【编辑推荐】
Java 处理 oracle clob类型 字段
如果使用Oracle的话,直接将Clob字段读取为String;也就是下面这一行:clob = () (1);可以直接写成String str = (1);
如何将oracle数据库中的一张表中的字段有选择性的导出到csv文件并定时执行
可用sqlplus的方式先在某文件夹下(我就直接以C盘根目录为例了)创建文件内容如下set linesize 200set term off verify off feedback off pagesize 0set head offset trimout onset trimspool onspool offexit其中是你要保存的文件名,这里貌似不能导成excel,只可以保存成csv格式,然后你再自己转换吧,文本是没问题的,其中 是另一个文件,内容如下你要想把数据导成以逗号分隔脚本这么写我就简单以emp表为例了,也是用的to_char函数,只要语句写正确就OKselect empno||,||to_char(hiredate,yyyy-mm-dd) from emp;结尾必须用分号把这个保存成文件然后cmd进到你要执行的文件夹下sqlplus 用户名/密码 @main然后无限的等待,等到把你的文件导成你将来要是要把文件导入到哪的话,可以用sqlloader这个网上教程很多
select TO_CHAR(to_date(23-JUN-11,dd-MON-YY),YYYY-MM-DD) from dual
发表评论