以下的文章是通過Oracle字段轉字符串以及其多行記錄合並/連接/聚合字符串的幾種常用方法的具體操作,如果你對其相關的實際操作有興趣的話,你就可以對以下的文章點擊觀看了。
怎麼合並多行記錄的字符串,一直是Oracle新手喜歡問的SQL問題之一,關於這個問題的帖子我看過不下30個了,現在就對這個問題,進行一個總結。
什麼是合並多行字符串(連接字符串)呢,例如:
- SQL> desc test;
- Name Type Nullable Default Comments
- COUNTRY VARCHAR2(20) Y
- CITY VARCHAR2(20) Y
- SQL> select * from test;
- COUNTRY CITY
中國 台北
中國 香港
中國 上海
日本 東京
日本 大阪
要求得到如下結果集:
中國 台北,香港,上海
日本 東京,大阪
實際就是對字符實現一個聚合功能,我很奇怪為什麼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 /
上述的相關內容就是對Oracle字段轉字符串以及多行記錄合並/連接/聚合字符串的幾種方法的部分描述,希望會給你帶來一些幫助在此方面。