連線字串的SQL方法
我的部落格的第一篇文章就是介紹如何將字串連線在一起的,這裡介紹一下透過SQL的方法來解決同樣的問題。
對字串的“sum”——在Oracle中自定義聚集函式的例子:http://yangtingkun.itpub.net/post/468/3380
對於下面這個利用自定義聚集函式的例子,將其改寫為直接用SQL實現:
SQL> SELECT * FROM TAB;
TNAME TABTYPE CLUSTERID
-------------------------------------------------- ------- ----------
SY_NAME SYNONYM
T TABLE
TEST TABLE
TEST1 TABLE
T_BLOB TABLE
T_CLOB TABLE
V_T VIEW
V_TEST VIEW
已選擇8行。
SQL> SELECT TABTYPE, F_LINK(TNAME) TNAME FROM TAB GROUP BY TABTYPE;
TABTYPE TNAME
------- --------------------------------------------------
SYNONYM SY_NAME
TABLE T,TEST1,T_CLOB,T_BLOB,TEST
VIEW V_T,V_TEST
除了利用自定義聚集函式外,SQL函式中能將多個字串合併在一起的只有SYS_CONNECT_BY_PATH了。
而這個函式只能應用在樹型查詢中,為了能使用這個函式,必須人為的構造出樹來。也就是說,必須可以構造出一個CONNECT BY列使得相同的TABTYPE的TNAME可以用SYS_CONNECT_BY_PATH連線起來。
連線列可以使用ROW_NUMBER() OVER()來構造,在CONNECT BY的時候指定當前列的等於父列的值加1。並在START WITH時指定起始值為1。
最後對TABTYPE進行分組,取得最大值就是最終需要的結果:
SQL> SELECT TABTYPE, MAX(LTRIM(SYS_CONNECT_BY_PATH(TNAME, ','), ',')) TNAME
2 FROM
3 (
4 SELECT TABTYPE, TNAME, ROW_NUMBER() OVER(PARTITION BY TABTYPE ORDER BY TNAME) RN
5 FROM TAB
6 )
7 START WITH RN = 1
8 CONNECT BY PRIOR RN + 1 = RN
9 AND PRIOR TABTYPE = TABTYPE
10 GROUP BY TABTYPE;
TABTYPE TNAME
------- --------------------------------------------------
SYNONYM SY_NAME
TABLE T,TEST,TEST1,T_BLOB,T_CLOB
VIEW V_T,V_TEST
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69399/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle字串連線的方法Oracle字串
- SQL連線符與使用字串SQL字串
- SQL Server 資料庫連線字串的宣告SQLServer資料庫字串
- Python字串連線的5種方法Python字串
- 配置SQL Developer連線MySQL的方法DeveloperMySql
- [資料庫連線字串] Access 連線字串(轉)資料庫字串
- [資料庫連線字串]Access連線字串(轉)資料庫字串
- MySQL字串連線MySql字串
- mongodb連線字串MongoDB字串
- 各種連線資料庫的連線字串資料庫字串
- SQL Server 2008連線字串寫法大全SQLServer字串
- 【SQL】表連線 --半連線SQL
- C#連線SQLite的字串C#SQLite字串
- SQL中的左連線和右連線SQL
- 【SQL】SQL表連線方法方式介紹(Oracle/Postgresql)SQLOracle
- SCSS 字串連線符CSS字串
- matlab連線字串Matlab字串
- oracle中字串連線Oracle字串
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- SQL Server連線SQL Server、SQL Server連線ORACLE 連結伺服器SQLServerOracle伺服器
- sql 內連線和外連線SQL
- SQL SERVER 自連線、外連線SQLServer
- 【建議收藏】五種方法教你python字串連線!Python字串
- SQL的連線型別SQL型別
- 【SQL】Oracle的內連線、左外連線、右外連線及全外連線SQLOracle
- golang 幾種字串的連線方式Golang字串
- SQL Deverlop連線SQL ServerSQLdevServer
- 連線SQL ServerSQLServer
- SQL連線句法SQL
- MySQL字串連線函式MySql字串函式
- ASPNET中連線字串字串
- 資料庫連線字串資料庫字串
- 深入理解SQL的四種連線-左外連線、右外連線、內連線、全連線SQL
- SQL管理器可以連線 但是*.udl以及ADO連線不上的解決方法SQL
- 字串連線超長的解決(二)字串
- 字串連線超長的解決(一)字串
- Oracle的表連線方法(三)雜湊連線Oracle
- 微課sql最佳化(15)、表的連線方法(4)-關於Hash Join(雜湊連線)SQL