java split 实现_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、付费专栏及课程。

余额充值