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截取字符串
  • tph5559
  • tph5559
  • 2015年10月20日 16:53
  • 1845

ORACLE(PL/SQL) 根据字符分割(SPLIT)字符串返回数组

ORACLE没有提供现成的函数来进行字符串的分割,网上有很多中现实方法,本文介绍一种我自己的实现方式。主要是使用Oracle内部函数instr和substr函数的方式来实现。...
  • warrenjiang
  • warrenjiang
  • 2015年11月28日 13:56
  • 5126

Oracle存储过程拼接in语句 & 自定义split函数

关于Oracle存储过程中拼接in语句以及自定义split函数
  • wlwlwlwl015
  • wlwlwlwl015
  • 2016年05月20日 09:55
  • 2318

plsql 类似Java中的split方法 字符串分割

--包头CREATE OR REPLACE PACKAGE asset_formation_api IS -- Author : DIQYE -- Created : 2012/11/8 ...
  • diqye2011
  • diqye2011
  • 2012年11月08日 15:14
  • 3572

VC写的Split函数实现类

  • 2009年12月04日 21:31
  • 1KB
  • 下载

sqlserver 实现 行转列 split 分割的函数

  • 2017年05月11日 15:39
  • 784B
  • 下载

oracle拆分逗号分隔字符串 实现split

最近老有人问题同样的sql 实现方法,itpub 上发一下,照顾百度用户。 如果一个字符串中有像逗号或其它符号分隔,你想把它折分成列,如’first field, second field , th...
  • doupeihua
  • doupeihua
  • 2016年03月25日 16:28
  • 11023

MFC实现python中的split功能

新博客地址:http://gorthon.sinaapp.com/ void FunctionPy::split(const CString src, vector &dest, const C...
  • bh20077
  • bh20077
  • 2011年05月29日 21:08
  • 1301

编写MYSQL插件(UDF)使其实现Split函数

.
  • Sidyhe
  • Sidyhe
  • 2016年01月19日 16:12
  • 1251

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

#include #include #include using namespace std; void split(const string& src, const str...
  • mowwwcom
  • mowwwcom
  • 2014年10月10日 14:08
  • 346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PLSQL 实现split
举报原因:
原因补充:

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