Oracle中使用Split函式

2021-04-12 15:59:18 字數 1609 閱讀 5466

--定義陣列型別

type t_array is varray(2000) of varchar2(4000);

v_varray t_array;

--將字串轉換成為陣列 --陣列解析函式摘的,不應該每個字元遍歷,只作啟示

function f_splitstr(str in varchar2, separator in varchar2) return t_array;

--返回陣列

function f_splitstr(str in varchar2, separator in varchar2) return t_array is

len number;

currentnum number;

currentindex number;

strs t_array;

ichar number;

begin

len := length(str);

currentnum := 1;

currentindex := 1;

strs := t_array();

for i in 1 .. len loop

if substr(str, i, 1) = separator then ××××××××

strs.extend(1);

strs(currentindex) := substr(str, currentnum, i - currentnum);

currentindex := currentindex + 1;

currentnum := i + 1;

end if;

ichar := i;

end loop;

strs.extend(1);

if currentindex = 1 then

strs(1) := str;

else

strs(currentindex) := substr(str, currentnum, ichar - currentnum + 1);

end if;

return strs;

end f_splitstr;

方法中使用陣列

str_varray t_array;

str_varray := f_splitstr(p_xianlu_id, ',');

for y in 1 .. str_varray.count loop

select * from table1 where aa=str_varray(y)

end loop;

動態執行sql語句

v_sqlstr :='delete from table1';

execute immediate v_sqlstr;

批量更新

update table t1 set

(t1.aa,t1.ab)=

(select t2.ca,t2.cb

from table2 t2

where t2.ca='aaa' and t2.aa_id=t1.aa_id)

where exists

(select 1 from table2 t2 where t2.aa_id=t1.aa_id) 

Spark sparksql中使用自定義函式

中分別用物件導向和面向函式兩種寫法自定義了兩個函式 low2up 小寫轉大寫 up2low 大寫轉小寫 import org.apache.spark.sql.types.stringtype import org.apache.spark.sql.object sparksqlfunction s...

關於java中使用split方法丟失末尾空值

示例 string str 1,2,string arr str.split 這樣得到的陣列元素個數只是2個。原因是,最後乙個 後沒有內容,它沒有作為空字串成為第三個陣列元素,結尾的空字串被丟棄了。使用預設的split方法時,會預設丟棄字串末尾的空值,而字串中間的空值則會作為陣列中的一項資料,不會被...

給Oracle新增split和splitstr函式

最近專案中有很多需要做批量操作的需求,客戶端把一組逗號分隔的id字串傳給資料庫,儲存過程就需要把它們分割,然後逐個處理。以往的處理方式有如下幾種 1 在儲存過程內寫迴圈,逐個分析字串中的id,然後逐個處理。缺點 迴圈一次處理乙個,如果每次判斷都很多,效率將很受影響。適合每次處理要做單獨判斷的情況。2...