<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Oracle以逗號分隔的字符串拆分為多行數據實例詳解

      RACLE開發知識:Oracle以逗號分隔的字符串拆分為多行數據實例詳解

      前言

      近期在工作中遇到某表某字段是可擴展數據內容,信息以逗號分隔生成的,現需求要根據此字段數據在其它表查詢相關的內容展現出來,第一想法是切割數據,以逗號作為切割符,以下為總結的實現方法,以供大家參考、指教。

      1、regexp_substr函數,通過正則來拆分字符串,函數用法為:(必須是oracle 10g+的版本才支持)

       REGEXP_SUBSTR函數格式如下:

      function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)

      __srcstr :需要進行正則處理的字符串

      __pattern :進行匹配的正則表達式

      __position :起始位置,從第幾個字符開始正則表達式匹配(默認為1)

      __occurrence :獲取第幾個分割出來的組(分割后最初的字符串會按分割的順序排列成組),默認為1

      __modifier :模式(’i’不區分大小寫進行檢索;’c’區分大小寫進行檢索。默認為’c’。)針對的是正則表達式里字符大小寫的匹配

      ——————————————————————————————————————-

        此函數只能每次取一個字符串出來,有點雞肋,字符串中逗號的數量是不確定的,如果有2個逗號,需要提取的字段就是3個。為了確定有多少個需要提取的字段,需要用到connect by命令實現動態參數構造連續的值,通過原字符串長度和被替換后字符串長度相減,可以得到原字符串中的逗號數量,加1后得到需要提取的匹配字段數量。

       SQL:

      select bs from cs1_0 where slid=’201804100038′
      –正則分割后的第一個值
      SELECT REGEXP_SUBSTR((select bs from cs1_0 where slid=’201804100038′),'[^,]+’,1,1,’i’) as 分割后結果 FROM DUAL;
      –獲取一個多個數值的列,從而能夠讓結果以多行的形式展示出來
      SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=5;
      –將上面REGEXP_SUBSTR的occurrence(標識第幾個匹配組)實現動態參數,使用 connect by組合起來
      SELECT REGEXP_SUBSTR((select bs from cs1_0 where slid=’201804100038′),'[^,]+’,1,LEVEL,’i’) as 分割后結果 FROM DUAL CONNECT BY LEVEL <=5;
      –優化一下(動態獲匹配組標識行數)
      select regexp_substr((select bs from cs1_0 where slid=’201804100038′),'[^,]+’,1,LEVEL,’i’) as 分割后結果 from dual
      connect by level <= length((select bs from cs1_0 where slid=’201804100038′))-length(regexp_replace((select bs from cs1_0 where slid=’201804100038′),’,’,”))+1;

      2、以Type類型和function函數的方式實現

      1)建立TYPE類型

      CREATE OR REPLACE TYPE strsplit_type_12 IS TABLE OF VARCHAR2 (4000)

      2)建立function存儲函數
      create or replace function strsplit_66(p_value varchar2,p_split varchar2 ) –字符串,切割符
      –根據特定字符來切割字符串
      return strsplit_type_12
      pipelined is
      v_idx integer;
      v_str varchar2(500);
      v_strs_last varchar2(4000) := p_value;

      begin
      loop
      v_idx := instr(v_strs_last, p_split);
      exit when v_idx = 0;
      v_str := substr(v_strs_last, 1, v_idx – 1);
      v_strs_last := substr(v_strs_last, v_idx + 1);
      pipe row(v_str);
      end loop;
      pipe row(v_strs_last);
      return;
      end strsplit_66;

      SELECT ROWNUM 序號, a.* FROM TABLE(strsplit_66((select bs from cs1_0 where slid=’201804100038′), ‘,’)) a;

       測試一下:

      posted @ 2023-04-17 16:42  癡迷的小和尚  閱讀(3544)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久精品国内一区二区三区| xxxxbbbb欧美残疾人| 亚洲天堂成人网在线观看| 岛国大片在线免费播放| 制服丝袜美腿一区二区| 国精品无码一区二区三区左线| 亚洲一区在线观看青青蜜臀| 国产精品va无码一区二区 | 少妇精品无码一区二区免费视频| 久久羞羞色院精品全部免费| 久久精品国产再热青青青| 77777五月色婷婷丁香视频| 成人国产精品中文字幕| 亚洲男人av天堂久久资源| 国产一区二区三区av在线无码观看 | 大地资源中文在线观看西瓜| 田林县| 亚洲av第二区国产精品| 久久一级精品久熟女人妻| 欧美激情视频一区二区三区免费| 欧美一本大道香蕉综合视频| 麻豆av一区二区三区| 换着玩人妻中文字幕| 中文国产成人精品久久不卡| 国产怡春院无码一区二区| 国产免费一区二区不卡| 1区2区3区高清视频| 精品国产成人亚洲午夜福利| 亚洲欧美人成网站在线观看看| 国产色无码专区在线观看 | 日区中文字幕一区二区| 在线精品亚洲区一区二区| 永久免费观看美女裸体的网站| 精品在免费线中文字幕久久| 美日韩不卡一区二区三区| 亚洲 欧美 动漫 少妇 自拍| 屯留县| 精品国产第一国产综合精品| 亚洲国产天堂久久综合226114| 成人片黄网站色大片免费| 精品一区二区成人码动漫|