oracle sys_connect_by_path 函數 結果集連接建站知識
導讀:1建站知識這幾天和幾個網上朋友一起探討oracle開發中的一些特別之處,談到了豎橫對換的方式。高端網站建設seo網站優化培訓。
以前看過有人轉換過的,當時僅僅驚嘆了一下,就過去了,沒有記下來,直至于用到的時候呢,開始到處找,找來找去都沒有找不到痕跡了,心里也就郁郁寡歡呀。 今天無意間,看connect by的使用,看到了sys_connect_by_path的用法,算是給我一個另類的驚喜了,sy網站seo優化培訓s_connect_by_path(columnname, seperator) 也可以拼出串來,不過這個函數本身不是用來給我們做這個結果集連接用的,而是用來構造樹路徑的,所以需要和connect by一起來用。 呵呵呵,在這里囂張了一把,基于對oracle的一些函數的了解的基礎上,看我是怎樣硬生生的把一個沒有樹結構的普通表或者seo網站優化培訓結果集做出我們想要的東西來。 magic is start. 道具,一個普通表,就一個字段 name, 姑且叫表名為test_sysconnectbypath吧,表名太長,嘻嘻,不怕,別名之。 以下為該表數據 NAME ------------------ 深圳 武漢 上海 北京 天津 新加坡 別名之 SQL>with temp as (select name form test_sysconnectbypath); 這是別名的寫法,我們下面的sql語句就可以用temp來代替這個結果集。當然這個()里面可以是你自己的復雜查詢出來的結果集也行網站建設制作 第一變性開始,把這個變成有樹形結構的 怎么才能變形成樹結構了,大家馬上想到,加一個pid,和id才行喲,這里沒有,我們就給他們加上吧。不過,加了id,怎么來填他們的結構數據呢,這里需要另一個函數顯圣了 lag() , lag() 是取前記錄, 和lead相對, 如果是簡單的拼的話,樹結構不就是,上一條記錄就是下一條記錄的父節點了么 這樣我們用rownum,不就.... OK了 action select t.name, no, lag(no) over(order by no) pid from (select temp.*, rownum no from temp) t; 結果出來了 NAME NO PID -------------------- ---------- ---------- 深圳 1 武漢 2 1 上海 3 2 北京 4 3 天津 5 4 新加坡 6 5 現在就是個樹形了吧。 再變樹 action select * from (select t.name, no, lag(no) over(order by no) pid from (select temp.*, rownum no from temp)) t start with pid is null connect by prior no=pid; 看看結果吧 結果出來了 NAME NO PID -------------------- ---------- ---------- 深圳 1 武漢 2 1 上海 3 2 北京 4 3 天津 5 4 新加坡 6 5 奇怪結果沒有變喲,是的,這里只是把樹給選出來了,你如果加個lpad(' ', 4*level, '*')||name就可以看出端倪了 最后一變,拼成串 select sys_connect_by_path(name. ',') text from (select t.name, no, lag(no) over(order by no) pid from (select temp.*, rownum no from temp)) t start with pid is null connect by prior no=pid; 你們自己看結果吧。 Text -------------------------------------------------- 深圳,武漢,上海,北京,天津,新加坡 ...... 呵呵呵,雖然是做出來來,但是就像上面說講的,這里只是另類的喜悅,因為這個不是我以前看到的那個解決方案,不過是通過這個方法,有用到了強大的connect by已經分析函數over,僅是竊喜, 找尋工作還要繼續,什么時候才很然給我撥開云霧找到你喲。相關高端網站建設seo網站優化培訓。
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-22 ,文章oracle sys_connect_by_path 函數 結果集連接建站知識主要講述函數,標簽,oracle sys_connect_by_pa網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_5025.html