首先需要定義 2 個型別
1. row 型別
create or replace type ty_row_str_split as object (strvalue varchar2 (4000));
2. table 型別
create or replace type ty_tbl_str_split is table of ty_row_str_split;
3. 建立函式
-- 拆分字串函式 --
------------------------------
--p_str 目標字串
--p_delimiter 分隔符
--返回以乙個一維陣列
create or replace function fn_split(p_str in varchar2,
p_delimiter in varchar2)
return ty_tbl_str_split is
j int := 0;
i int := 1;
len int := 0;
len1 int := 0;
str varchar2(4000);
str_split ty_tbl_str_split := ty_tbl_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) := ty_row_str_split(strvalue => 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) := ty_row_str_split(strvalue => str);
end if;
end loop;
return str_split;
end fn_split;
使用樣例:
select to_char(strvalue) as value from table(fn_split('aa,bb,cc',','));
-- 解析json字串 --
------------------------------
--p_jsonstr json字串
--p_key 鍵
--返回p_key對應的值
create or replace function fn_parsejson(p_jsonstr varchar2,
p_key varchar2) return varchar2
isrtnval varchar2(50);
i number(2);
jsonkey varchar2(50);
jsonvalue varchar2(50);
json varchar2(1000);
begin
if p_jsonstr is not null then
json := replace(p_jsonstr,'','') ;
json := replace(json,'"','') ;
for temprow in(select strvalue as value from table(fn_split(json, ','))) loop
if temprow.value is not null then
i := 0;
jsonkey := '';
jsonvalue := '';
for tem2 in(select strvalue as value from table(fn_split(temprow.value, ':'))) loop
if i = 0 then
jsonkey := tem2.value;
end if;
if i = 1 then
jsonvalue := tem2.value;
end if;
i := i + 1;
end loop;
if(jsonkey = p_key) then
rtnval := jsonvalue;
end if;
end if;
end loop;
end if;
return rtnval;
end fn_parsejson;
使用樣例:
JSON字串解析
一 json物件 js可以按以下方式定義物件 varobj 這樣就定義了物件 obj,它有兩個公共屬性id和name,可以用 obj.id 的方式直接訪問其屬性值。從伺服器獲取資料時往往不止乙個物件,這就需要用到物件陣列,js中物件陣列可以用 來定義,如下 varobjs alert objs 0 ...
json字串解析
有時儲存在資料庫的資料是一串json字串,需要進行讀取的時候就需要解析操作。簡單介紹兩種 1 net.sf.json.2 com.alibaba.fastjson.第一種使用方式 import net.sf.json.jsonarray import net.sf.json.jsonexceptio...
JSON字串解析
有時儲存在資料庫的資料是一串json字串,需要進行讀取的時候就需要解析操作。簡單介紹兩種 1 net.sf.json.2 com.alibaba.fastjson.第一種使用方式 import net.sf.json.jsonarray import net.sf.json.jsonexceptio...