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
is j 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;
測試:
select * from table (cast (fn_split ('1;;12;;123;;1234;;12345', ';;') as ty_str_split));
結果:1
12123
1234
12345
如果我們查尋條件是這樣:100~200-100-200-200~300-200-300',
它表示,在100到200之間的,100在200到300之間的,200如果我們想進行 行轉列,可以使入如下語句
select max(case subject when 0 then rv else '0' end) as rangename ,max(case subject when 1 then rv else '0' end) as from_v,max(case subject when 2 then rv else '0' end) as to_v
from
(select column_value as rv ,trunc((rownum-1)/3) as name,mod(rownum-1,3) as subject from(
select * from table (cast (fn_split ('100~200-100-200-200~300-200-300', '-') as ty_str_split)))
) group by name
結果是這樣的:
100~200 100 200
200~300 200 300
js中通過split函式分割字串成陣列小例子
投稿 whsnow 字型 增加 分割字串成陣列的方法有很多,不過使用最多的還是split函式,接下來為大家介紹下它的具體使用方法,感興趣的朋友可以參考下 複製 如下 js中split的用法 複製 如下 js刪除陣列元素 var arr a b c 若要刪除其中的 b 有兩種方法 1.delete方法...
Oracle 實現 split 函式 返回陣列)
功能描述 用指定分隔符切割輸入的字串,返回一維陣列,每個陣列元素為乙個子串。源 create or replace type ty str split is table of varchar2 4000 create or replace function fn split p str in var...
給Oracle新增split和splitstr函式
最近專案中有很多需要做批量操作的需求,客戶端把一組逗號分隔的id字串傳給資料庫,儲存過程就需要把它們分割,然後逐個處理。以往的處理方式有如下幾種 1 在儲存過程內寫迴圈,逐個分析字串中的id,然後逐個處理。缺點 迴圈一次處理乙個,如果每次判斷都很多,效率將很受影響。適合每次處理要做單獨判斷的情況。2...