對DB2 實現(xiàn)split的操作流程描述
以下的文章主要描述的是DB2 實現(xiàn)split的實際操作流程,假如你對DB2 實現(xiàn)split的實際操作流程有興趣了解的話,你就可以通過以下的文章對其有個更好的了解,以下就是具體方案的描述,希望在你今后的學(xué)習(xí)中會有所幫助。
請教大家一個問題,用函數(shù)實現(xiàn)split功能,分割字符串。
如 輸入字符串為 'a,b,c',
實現(xiàn)輸出結(jié)果為第一行 a
第二行 b
第三行 c
求具體的DB2 實現(xiàn)函數(shù)。
另附 oracle的實現(xiàn)方法為:
- 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 (fn_split ('a,b,c', ',') );
結(jié)果:
a
b
c
最佳答案 leo
可以寫個udf 來進行分割, 但我更喜歡使用sql:
- with n(str, ori, pos) as (
 - values ('abc,bc,cd,d,ff,', 1, posstr('abc,bc,cd,d,ff,', ','))
 - union all
 - select str, pos+1, locate(',', str, pos+1)
 - from n
 - where locate(',', str, pos+1)>0)
 - select str, ori, pos, substr(str, ori, pos-ori) as result from n
 
可以寫個udf 來進行分割, 但我更喜歡使用sql:
- with n(str, ori, pos) as (
 - values ('abc,bc,cd,d,ff,', 1, posstr('abc,bc,cd,d,ff,', ','))
 - union all
 - select str, pos+1, locate(',', str, pos+1)
 - from n
 - where locate(',', str, pos+1)>0)
 - select str, ori, pos, substr(str, ori, pos-ori) as result from n
 
以上的相關(guān)內(nèi)容就是對DB2 實現(xiàn)split的介紹,望你能有所收獲。
【編輯推薦】
- DB2 存儲過程的異常處理器類型有幾種?
 - 對DB2 增量備份的正確運用描述
 - DB2 并行版本中的查詢優(yōu)化登峰造極!
 - IBM DB2數(shù)據(jù)庫與注意事項_DB2編程的描述
 - DB2性能優(yōu)化之設(shè)計DB2配置數(shù)據(jù)庫很好用!
 















 
 
 
 
 
 
 