oracle 實現按照指定字元擷取陣列

2021-05-25 06:01:45 字數 1382 閱讀 8497

功能描述:用指定分隔符切割輸入的字串,返回一維陣列,每個陣列元素為乙個子串。

源**:

create or replace type ty_str_split is table of varchar2 (4000);

create or replace function fn_split (p_str in varchar2, p_delimiter in varchar2)

return ty_str_split

isj int := 0;

i int := 1;

len int := 0;

len1 int := 0;

str varchar2 (4000);

str_split ty_str_split := ty_str_split ();

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 fn_split;

/測試:

declare

cursor c

isselect *

from table (cast (fn_split ('1;;12;;123;;1234;;12345', ';;') as ty_str_split));

r c%rowtype;

begin

open c;

loop

fetch c into r;

exit when c%notfound;

dbms_output.put_line (r.column_value);

end loop;

close c;

end;

/ 結果:112

1231234

12345

oracle按照指定順序進行排序

之前在網上查了下按照指定順序進行排序的方法,根據charindex來處理排序,但是在oracle發現不行,因為oracle沒有charindex函式,然後使用instr代替了charindex,然後又在網上搜了另外一種方 實驗如下 1.新建表 create table br dict id numb...

oracle擷取指定字元

在oracle中 可以使用instr函式對某個字串進行判斷,判斷其是否含有指定的字元。在乙個字串中查詢指定的字元,返回被查詢到的指定的字元的位置。instr 源字串 目標字串 開始位置 第幾次出現 其中sourcestring代表源字串 deststring代表要從源字串中查詢的子串 start代表...

按照指定長度切割字串

按照指定長度分割字串 param inputstring 需要切割的源字串 param length 指定的長度 return public static string getdivlines string inputstring,int length if remainder 0 string s...