PLSQL 实现split

转载 2015年11月20日 15:36:09
PLSQL 实现split:
 

 

复制代码
FUNCTION Get_Field_Value
    (
        in_str  
IN VARCHAR2,
        findstr 
IN VARCHAR2,
        field   
IN INTEGER
    ) 
RETURN VARCHAR2 AS
        tmp_msg 
VARCHAR2(20);
        
-- 取字段 值 ,field start from 0 
        startidx INTEGER;
        endidx   
INTEGER;
    
    
BEGIN
        startidx :
= 1;
        endidx   :
= 1;
    
        
FOR i IN 1 .. field
        LOOP
            
--INSTR(in_string,'|',tmp_pos);
            --substr(in_string,tmp_pos,tmp_pos1-tmp_pos); 
            IF i > 1 THEN
                startidx :
= INSTR(in_str, findstr, startidx);
                
IF startidx = 0 THEN
                    
RETURN NULL;
                
END IF;
                startidx :
= startidx + length(findstr);
            
END IF;
        
END LOOP;
    
        endidx :
= INSTR(in_str, findstr, startidx);
        
IF endidx = 0 THEN
            endidx :
= length(in_str) + 1;
        
END IF;
    
        
RETURN substr(in_str, startidx, endidx - startidx);
    
    EXCEPTION
        
WHEN OTHERS THEN
            
RETURN NULL;
    
END;
复制代码

 


例二

 

复制代码
TYPE ARRAY IS TABLE OF VARCHAR2(255);
FUNCTION SPLIT(P_STR IN VARCHAR2, P_DELIMITER IN VARCHAR2RETURN ARRAY IS
    J         INT := 0;
    I         INT := 1;
    LEN       INT := 0;
    LEN1      INT := 0;
    STR       VARCHAR2(4000);
    STR_SPLIT ARRAY := ARRAY();
  BEGIN
    LEN  := LENGTH(P_STR);
    LEN1 := LENGTH(P_DELIMITER);
  
    WHILE J < LEN LOOP
      J := INSTR(P_STR, P_DELIMITER, I);
    
      IF J = 0 THEN
        J   := LEN;
        STR := SUBSTR(P_STR, I);
        STR_SPLIT.EXTEND;
        STR_SPLIT(STR_SPLIT.COUNT) := STR;
      
        IF I >= LEN THEN
          EXIT;
        END IF;
      ELSE
        STR := SUBSTR(P_STR, I, J - I);
        I   := J + LEN1;
        STR_SPLIT.EXTEND;
        STR_SPLIT(STR_SPLIT.COUNT) := STR;
      END IF;
    END LOOP;
  
    RETURN STR_SPLIT;
  END SPLIT;
复制代码

 

调用:

STR_SPLIT := SPLIT('A,B,C,D,E,F', ',');
FOR I IN 1 .. STR_SPLIT.COUNT LOOP
      DBMS_OUTPUT.PUT_LINE(I);
END LOOP;

相关文章推荐

PLSQL之Split截取字符串

PLSQL之Split截取字符串

VC写的Split函数实现类

C++:实现split分割字符串

#include #include #include using namespace std; void split(const string& src, const str...

SQL里实现类型String.Split()方法

题目有点标题党哈~不好意思,其实就是今天新学的一个小方法,分享一下给大家。   数据库中,总是遇到一些字段内容,想根据某个标识截取一下字符串,可是都想不到好办法,如果能有一个像ASP.NET里面的...
  • pxlzy
  • pxlzy
  • 2012-09-22 10:38
  • 201

用C++实现split/startswith/endswith/trim

一.split函数1.python演示 2.C++函数原型vector split(const string& srcstr, const string& delimeter = ";");//...

mysql存储过程实现split功能

存储过程实现split功能并查询,可以进索引。 首先建一张表:cross_join_idCREATE TABLE `cross_join_id` ( `id` int(11) DEFAULT NU...

db2 实现split函数解析

问题来源 实现类似功能的函数

CSV文件格式解析器的实现:从字符串Split到FSM

本文乃Siliphen原创,转载请注明出处:   本文分为5小节,基本上就是我刚接触CSV文件到思考、实践做一个CSV解析器的过程的还原。希望我的思路也能带领你一步步从浅到深认识CSV文件格式。   ...

Split Array Largest Sum 二分查找应用 C实现

题目描述 初步分析 该题乍一看没有什么思路,于是我便直接思考用二分查找怎么做(因为该题是在二分查找分类下的)。那对什么东西来应用二分查找呢? 1、是对在m个子串的条件下,来找寻(m-1)个cut的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)