函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| CREATE OR REPLACE FUNCTION split_str( var_str IN VARCHAR2, var_split IN VARCHAR2) RETURN Tbl_StrSplit IS var_out Tbl_StrSplit; var_tmp VARCHAR2(4000); var_element VARCHAR2(4000); BEGIN var_tmp := var_str; var_out := Tbl_StrSplit(); WHILE instr(var_tmp, var_split) > 0 LOOP var_element := SUBSTR(var_tmp, 1, instr(var_tmp, var_split) - 1); var_tmp := SUBSTR(var_tmp, instr(var_tmp, var_split) + LENGTH(var_split), LENGTH(var_tmp)); var_out.extend; var_element :=SUBSTR(var_element,instr(var_element,'>',1)+1); var_out(var_out.count) := var_element; END LOOP; var_out.extend; var_out(var_out.count) := var_tmp; RETURN var_out; END split_str;
|
示例
1 2 3
| select * from table(split_str('1,2,3,', ','));
select v.column_value from table(split_str('1,2,3,', ',')) v
|
例如:表 table_name
中 split_str_column
列值为 1,2,3
,切割后变为三条数据:
1 2
| select v.column_value, t.id from table_name t, table(split_str(t.split_str_column, ',')) v
|