sql 实现java 中 split 功能

/*
TODO: owner="Jonsan_Guo" created="22-12-2010"
text="用sql做一个想java 中的string 类型 的 split 方法 的功能一样的函数,
      初步, 返回分割后的最后一个字符,
      而且分割字符 只能是char 类型,
     
      以后再完善,像Javasplit一样返回一个数组"
*/

create or replace procedure Split_Pro(armString IN VARCHAR2,
                                      separator in  CHAR,
                                      lastChars out varchar2) IS
                                                                           
  v_armString VARCHAR2(1000):= NULL;
  v_separator CHAR:= NULL;
  v_lastChars VARCHAR2(500):= NULL;
 
  v_separatorCount NUMBER(4,0):= 0;
 
  v_CountLog NUMBER(4):= 0;
                                         
begin
  v_armString := armString;
  v_separator := separator;
  v_lastChars := armString;
  dbms_output.put_line('v_armString   '||v_armString);
  BEGIN
      SELECT length(translate(v_armString,v_separator||v_armString,v_separator))
      INTO   v_separatorCount
      FROM dual;
     
      dbms_output.put_line('v_separatorCount   '||v_separatorCount);
 
  EXCEPTION
  WHEN OTHERS THEN
      v_separatorCount := 0;
      dbms_output.put_line('SQLCODE: '||SQLCODE||chr(10)||'SQLERRM: '||SQLERRM );
  END;
 
      dbms_output.put_line('v_separatorCount'||v_separatorCount);
  WHILE v_CountLog < v_separatorCount LOOP
 
      IF instr(v_lastChars,v_separator) = 1 THEN
         v_lastChars := substr(v_lastChars,2);
      END IF;
 
      v_CountLog := v_CountLog + 1;
     
      v_lastChars  :=  substr(v_lastChars,instr(v_lastChars,v_separator));
      dbms_output.put_line('v_lastChars      '||v_lastChars);
 
  END LOOP;
 
  IF instr(v_lastChars,v_separator) = 1 THEN
      v_lastChars := substr(v_lastChars,2);
  END IF;
 
  lastChars := v_lastChars;

EXCEPTION
  /*WHEN trim(lastChars) IS NULL THEN
  dbms_output.putline(' is null ')*/
WHEN OTHERS THEN
dbms_output.put_line(' exists errs ');
END Split_Pro;

 

 

 

-- Created on 23-12-2010 by JONSAN_GUO
declare
  -- Local variables here
  i VARCHAR2(100);
 
  CURSOR all_record IS
  SELECT prom
begin
  -- Test statements here
   Split_Pro('D:/work/2010-12-20/IN_RECON/CBI00014136 (20100728)/Common/jar/custom/FDPh4.jar',
                  '/',
                   i );
  dbms_output.put_line(i);
 
  SELECT * FROM local_prom_file
  WHERE
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值