--定義陣列型別
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...