<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    字符串分割問題[轉(zhuǎn)]
    ?
    ?
    ??? 字符串分割是一個經(jīng)常會用到的功能,無論用什么語言。在Oracle里,可以解決字符串分割的方法有很多種,如果寫Function,應(yīng)該是可以可以寫出適用性非常高的函數(shù)的。不過現(xiàn)在什么都流行直接用SQL來解決,下面轉(zhuǎn)兩篇文章來學(xué)習(xí)一下:
    ?
    ?
    分割字符串問題
    ===========================================================
    作者: zhouwf0726(
    http://zhouwf0726.itpub.net )
    發(fā)表于:2006.09.06 12:58
    分類: oracle開發(fā)
    出處:
    http://zhouwf0726.itpub.net/post/9689/203877
    ---------------------------------------------------------------
    ?
    問題源自 http://www.itpub.net/626418.html
    ?
    ?
    ?
    怎樣支掉字符串中逗號間重復(fù)的字符
    如 ',1,2,5,9,1,2,5,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,'怎樣支掉字符串中逗號間重復(fù)的字符,并將字符升序排列,得到
    ',1,2,3,5,9,'
    百思不得其解,是高手的試一下。
    ?
    解答:
    select col from(
    select sys_connect_by_path(col,',')||',' col,level from(
    select col,row_number() over(order by rownum) rn from (
    select distinct substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
    select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
    ) connect by rownum<length(translate(col,','||col,','))
    )
    )
    connect by prior rn = rn -1 order by level desc
    ) where rownum=1
    ?
    ?
    ?
    這個問題的解決辦法中的一部分(按照固定分隔符分割字符串)可以解決 http://www.itpub.net/515354.html
    ?
    ?
    要求用pl/sql寫一個函數(shù), 實現(xiàn)根據(jù)分割符把原字符串分成若干個字符串功能.
    輸入: string(字符串) 和 Delimiter (分隔符)
    輸出: substr1, ..., substrn (根據(jù)分割后的字符串排序, 不是子串在原字符串中的順序)
    ?
    解答:
    select substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
    select ',1,2,5,9,1,2,5,9,1,3,9,' col from dual
    ) connect by rownum<length(translate(col,','||col,','))
    ?
    ?
    ?
    ?
    分割串問題
    ===========================================================
    作者: zhouwf0726(
    http://zhouwf0726.itpub.net )
    發(fā)表于:2007.03.08 17:31
    分類: oracle開發(fā)
    出處:
    http://zhouwf0726.itpub.net/post/9689/269709
    ---------------------------------------------------------------
    ?
    一個網(wǎng)友的問題解決記錄 http://www.itpub.net/showthread.php?s=&threadid=723791
    ?
    我現(xiàn)在表有個字段是ids并且以@@分割,例如@@123@@234@@567@@.
    ?
    現(xiàn)在有一個select id from project查出來的結(jié)果集(如查出來id是123,234,555)現(xiàn)在我想用like匹配這個結(jié)果集,只要@@123@@234@@567@@.有一個id匹配出來出的結(jié)果集就OK
    ?
    SQL> select * from tt;
    ?
    ID
    ------------------------------------------------------------
    @@aa@@bb@@cc@@
    @@aaa@@bbb@@ccc@@
    ?
    SQL> create or replace type t_object as object(
    2 id varchar2(60),
    3 sub_id varchar2(60)
    4 );
    ?
    Type created
    ?
    SQL> create type t_ret_table is table of t_object;
    ?
    Type created
    ?
    SQL> create or replace function f_test(var_str in varchar2) return t_ret_table PIPELINED
    2 as
    3 var_tmp varchar2(60);
    4 var_element varchar2(60);
    5 begin
    6 for i in (select rtrim(ltrim(id,'@@'),'@@') id from tt) loop
    7 var_tmp := i.id;
    8 while instr(var_tmp,'@@')>0 loop
    9 var_element := substr(var_tmp,1,instr(i.id,'@@')-1);
    10 var_tmp := substr(var_tmp,instr(i.id,'@@')+2,length(var_tmp));
    11 pipe row(t_object(i.id,var_element));
    12 end loop;
    13 pipe row(t_object(i.id,var_tmp));
    14 end loop;
    15 return;
    16 end f_test;
    17 /
    ?
    Function created
    ?
    SQL> select id from table(f_test('a')) where sub_id in (select col from (select 'aa' col from dual union select 'bbb' col from dual union select 'ccc' from dual)) group by id;
    ?
    ID
    ------------------------------------------------------------
    aa@@bb@@cc
    aaa@@bbb@@ccc
    ?

    SQL>select * from table(f_test('a'));
    ?
    ID ??????????????????????????????????? SUB_ID
    -------------------------------------- ---------------------
    aa@@bb@@cc ???????????????????????????? aa
    aa@@bb@@cc ???????????????????????????? bb
    aa@@bb@@cc ???????????????????????????? cc
    aaa@@bbb@@ccc ????????????????????????? aaa
    aaa@@bbb@@ccc ????????????????????????? bbb
    aaa@@bbb@@ccc ????????????????????????? ccc
    ?
    6 rows selected.
    ?
    ?
    SQL>select id from table(f_test('a')) where sub_id in (
    select substr(col,instr(col,',',1,rownum)+1,instr(col,',',1,rownum+1)-instr(col,',',1,rownum)-1) col from (
    select ','||'aa,aaa,bbb'||',' col from dual
    ) connect by rownum<length(translate(col,','||col,','))
    )
    group by id
    ?
    ?
    ?
    posted on 2008-09-30 23:43 decode360 閱讀(258) 評論(0)  編輯  收藏 所屬分類: 05.SQL
    主站蜘蛛池模板: 一本色道久久88综合亚洲精品高清| 亚洲gv白嫩小受在线观看| 亚洲国产成人久久笫一页| 男人天堂2018亚洲男人天堂 | 一本岛v免费不卡一二三区| 久草免费在线观看视频| 国产亚洲精品精品国产亚洲综合| 亚洲人成网站免费播放| 日本最新免费网站| 久久亚洲私人国产精品vA| 一级特黄录像免费播放肥| jjzz亚洲亚洲女人| 少妇太爽了在线观看免费视频| 国产精品亚洲w码日韩中文| jzzjzz免费观看大片免费| 亚洲精品无码成人片在线观看 | 国产亚洲精品国产福利在线观看 | 精品在线免费视频| 91情侣在线精品国产免费| 亚洲国产精品乱码在线观看97| 91香蕉国产线观看免费全集| 亚洲av福利无码无一区二区| 免费女人高潮流视频在线观看| 内射干少妇亚洲69XXX| 国产一区二区三区免费视频| 精品亚洲福利一区二区| 免费一级特黄特色大片在线观看| 理论片在线观看免费| 亚洲成人在线免费观看| 久久久青草青青亚洲国产免观| 久久成人免费大片| 亚洲无成人网77777| 国产中文在线亚洲精品官网| 一级特黄录像免费播放肥| 亚洲av无码一区二区三区人妖| 亚洲成av人在片观看| 最近中文字幕免费mv视频8| 亚洲AV成人一区二区三区在线看| 亚洲AV无码专区国产乱码电影| 亚洲福利在线播放| 国产成人在线免费观看|