Oracle 遞迴函式與拼接

2022-09-05 21:03:14 字數 2897 閱讀 3508

1

select substr(sys_connect_by_path(tb.name,'

->

'),3

) name

2from

table

tb3 start with nvl(tb.parentid,0)=

04 connect by prior id=

mt.parentid

5 ;

在oracle中,sys_connect_by_path函式主要作用是可以把乙個父節點下的所有子節點通過某個字元進行區分,然後連線在乙個列中顯示。

sys_connect_by_path(欄位名, 2個字段之間的連線符號),注意這裡的連線符號不要使用逗號,oracle會報錯,

例子:1、建立表

1

create

table

sc_district2(

3 id number(10) not

null

,4 parent_id number(10

),5 name varchar2(255 byte) not

null6);

2、新增資料

1

insert

into sc_district(id,name) values(1,'

四川省');2

3insert

into sc_district(id,parent_id,name) values(2,1,'

巴中市');4

insert

into sc_district(id,parent_id,name) values(3,1,'

達州市'

); 5

6insert

into sc_district(id,parent_id,name) values(4,2,'

巴州區');7

insert

into sc_district(id,parent_id,name) values(5,2,'

通江縣');8

insert

into sc_district(id,parent_id,name) values(6,2,'

平昌縣');9

10insert

into sc_district(id,parent_id,name) values(7,3,'

通川區'

);11

insert

into sc_district(id,parent_id,name) values(8,3,'

宣漢縣'

);12

13insert

into sc_district(id,parent_id,name) values(9,8,'

塔河鄉'

);14

insert

into sc_district(id,parent_id,name) values(10,8,'

三河鄉'

);15

insert

into sc_district(id,parent_id,name) values(11,8,'

胡家鎮'

);16

insert

into sc_district(id,parent_id,name) values(12,8,'

南壩鎮'

);17

18insert

into sc_district(id,parent_id,name) values(13,6,'

大寨鄉'

);19

insert

into sc_district(id,parent_id,name) values(14,6,'

響灘鎮'

);20

insert

into sc_district(id,parent_id,name) values(15,6,'

龍崗鎮'

);21

insert

into sc_district(id,parent_id,name) values(16,6,'

白衣鎮');

生成表與資料如下:

1 查詢巴中市下行政組織遞迴路徑

2 selectid, name, parent_id,

3 substr(sys_connect_by_path(name,'->'),3) name_path

4 fromsc_district

5 start with name='巴中市'

6 connect by prior id=parent_id

7

8 查詢結果:

9 id name parent_id name_path

10 2 巴中市 1巴中市

11 4 巴州區 2 巴中市->巴州區

12 5 通江縣 2 巴中市->通江縣

13 6 平昌縣 2 巴中市->平昌縣

14 13 大寨鄉 6 巴中市->平昌縣->大寨鄉

15 14 響灘鎮 6 巴中市->平昌縣->響灘鎮

16 15 龍崗鎮 6 巴中市->平昌縣->龍崗鎮

17 16 白衣鎮 6 巴中市->平昌縣->白衣鎮

oracle 字段拼接方法 concat函式和

參考dreamy yue,最最麼麼噠 在表中會有多個字段,有時根據需求我們需要將兩個字段或者多個字段進行拼接,這時我們可以採用concat函式或者 達到字段拼接的目的。總結 concat 只能連線兩個字串,可以連線多個 concat只能連線兩個字串 sql select concat csdn ye...

oracle欄位拼接

select a.id,a.value b.value from a a,b b where a.id b.id 哪種資料庫?如果是sqlserver select cast column1 as varchar 10 cast column2 as varchar 10 as p from tab...

遞迴演算法與遞迴函式

遞迴演算法就是通過將問題不斷分解為同類子問題而解決問題的方法。絕大多數程式語言是支援函式的自呼叫的,也就是支援函式自身來進行遞迴。根據計算理論,可以證明出遞迴可以完全取代迴圈,因此在很多函式程式設計中習慣使用遞迴來實現迴圈。但是遞迴有乙個問題就是需要不斷的呼叫函式,會有較大的開銷。遞迴的函式需要逐級...