zoukankan      html  css  js  c++  java
  • 以固定分隔符拆分字符串

    1. PROCEDURE Str_To_Arr(p_Source_Str IN VARCHAR2,
    2.                        p_Split_Str IN VARCHAR2,
    3.                        Errbuf OUT VARCHAR2,
    4.                        Retcode OUT VARCHAR2,
    5.                        p_Dens_Array OUT Type_Tab_Arr) IS
    6.     v_Source_Str VARCHAR2(1000);
    7.     v_Split_Str VARCHAR2(8);
    8.     v_Count NUMBER; ----分割的个数
    9.     v_Split_Local NUMBER; ----分割符出现的位置
    10.     v_Pos_Local NUMBER; ----分割起始位置
    11.     v_Tab_Arr Xxt_Gl_Load_Vat_Pkg.Type_Tab_Arr;
    12.   BEGIN
    13.     Retcode := 0;
    14.     v_Pos_Local := 1;
    15.     v_Count := 1;
    16.     v_Source_Str := p_Source_Str;
    17.     v_Split_Str := p_Split_Str;
    18.     IF Length(v_Source_Str) = 0 THEN
    19.       Log('判断1');
    20.       Errbuf := '要分割的字符串为空,请输入要分割的字符串!';
    21.       Retcode := '2';
    22.       RETURN;
    23.     END IF;
    24.     IF Length(v_Split_Str) = 0 THEN
    25.       Log('判断2');
    26.       Errbuf := '请输入要分割的界定符!';
    27.       Retcode := '2';
    28.       RETURN;
    29.     END IF;
    30.     ---取出字符串的个数
    31.     SELECT Length(v_Source_Str) -
    32.            Length(REPLACE(Translate(v_Source_Str, v_Split_Str, ' '),
    33.                           ' ',
    34.                           '')) / Length(v_Split_Str)
    35.       INTO v_Count
    36.       FROM Dual;
    37.     FOR i IN 1 .. v_Count LOOP
    38.       SELECT Instr(v_Source_Str, v_Split_Str, v_Pos_Local + 1, 1)
    39.         INTO v_Split_Local
    40.         FROM Dual;
    41.       IF v_Split_Local = 0 THEN
    42.         v_Tab_Arr(i) := v_Source_Str;
    43.         dbms_output.put_line(v_tab_arr(i));
    44.         EXIT;
    45.       ELSE
    46.         IF i = 1 THEN
    47.           v_Tab_Arr(i) := Substr(v_Source_Str,
    48.                                  v_Pos_Local,
    49.                                  v_Split_Local - v_Pos_Local);
    50.           v_Pos_Local := v_Split_Local;
    51.           Dbms_Output.Put_Line(v_Tab_Arr(i));
    52.         ELSE
    53.           v_Tab_Arr(i) := Substr(v_Source_Str,
    54.                                  v_Pos_Local + Length(v_Split_Str),
    55.                                  v_Split_Local -
    56.                                  (v_Pos_Local + Length(v_Split_Str)));
    57.           v_Pos_Local := v_Split_Local;
    58.           --Dbms_Output.Put_Line(v_Tab_Arr(i));
    59.         END IF;
    60.       END IF;
    61.     END LOOP;
    62.     p_Dens_Array := v_Tab_Arr;
    63.   END Str_To_Arr;
  • 相关阅读:
    洛谷 P1360 [USACO07MAR]黄金阵容均衡Gold Balanced L…
    测试 10.23
    洛谷 P3130 [USACO15DEC]计数haybalesCounting Haybales
    洛谷 P1985 翻转棋
    codevs 1019 集合论与图论
    6、trait特质、包别名、文件、private[this]
    -_-#Error
    -_-#【乱码】URL中文参数
    【bug】【userAgent】极速模式与非极速模式存在差异
    -_-#【模块】getElementsByClassName
  • 原文地址:https://www.cnblogs.com/accumulater/p/7081457.html
Copyright © 2011-2022 走看看