ORACLE編程的套路——字串分解

來源:互聯網
上載者:User

標籤:

作者按,字串分解在ORACLE編程中可用於詞、字的解析,繼而可實現單詞搜尋的合并,為基礎代碼。

代碼如下,作者保留所有權。

create or replace function FUN_STRING_SPLIT (       v_string IN VARCHAR2,        v_sep IN VARCHAR2)  return fs.stringList IS/***************************************************************************//*                                                                         *//* 字串分割函數 for ORACLE                                               *//* @param v_string 母字串                                                   *//* @param v_sep 分隔字元                                                     *//* @return                字串列表                                       *//*   TYPE stringList IS TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;    *//* @author [email protected]                                               *//* All rights reserved. 未經許可,不得用於商業用途                         *//*                                                                         *//***************************************************************************/  --分隔字元長度  C_LEN int;  --刪除空格後的字串  v_str varchar2(256);  --分隔字元位置  v_pos int;  --子字串  v_sub varchar2(256);  --數組計數器  v_i int;  --結果  Result fs.stringList;BEGIN   v_str := TRIM(v_string);   --dbms_output.put_line(v_str);   v_pos := INSTR(v_str, v_sep);   v_i := 0;   C_LEN := LENGTH(v_sep);   --無匹配,整字串返回   IF v_pos < 1 AND LENGTH(v_str) > 0 THEN      Result(v_i) := v_str;      return Result;   END IF;   WHILE v_pos > 0 LOOP      v_sub := SUBSTR(v_str, 0, v_pos-1);      --添加到結果數組      IF LENGTH(v_sub) > 0 THEN         Result(v_i) := v_sub;         v_i := v_i+1;      END IF;      --dbms_output.put_line(v_sub);      v_str := SUBSTR(v_str, v_pos+C_LEN);      --dbms_output.put_line(v_str);      v_pos := INSTR(v_str, v_sep);   END LOOP;    --已無匹配,剩餘字串添加到結果數組    IF LENGTH(v_str) > 0 THEN       Result(v_i) := v_str;    END IF;    --調試輸出結果    dbms_output.put_line('清單項目數量: '||result.count() );    dbms_output.put_line('--['||v_string||'] split by ['||v_sep||']--');    v_i := 0;    FOR v_i IN 0..(result.count()-1) LOOP        dbms_output.put_line('('||v_i||'): '||result(v_i) );   end loop;   --返回結果數組   return  Result;END FUN_STRING_SPLIT;

代碼注釋相當詳細,不再對代碼進行解釋。

經測試,代碼支援ORACLE 10及以上版本。

ORACLE編程的套路——字串分解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.