hive中split()函数是非常好用的字符串处理方法,常配合索引用做字符串截取,Oracle中没有内置的SPLIT
函数,虽然可以用正则或者字符串截取方法实现,但是总感觉繁琐。下面是Oracle实现split方法代码:
create or replace function split(str in varchar2,symbol in varchar2,v_int in number)
/*oracle 实现split方法*/
return varchar2 --函数返回类型
is
target_str varchar2(100) ;--返回的字符串
v_symbol_count number; --标识个数
v_count number;
v_symbol_len number;--标识符长度
begin
v_symbol_count := length(str)-length(replace(str,symbol,''));
v_symbol_len := length(symbol);
v_symbol_count := v_symbol_count/v_symbol_len;--标识个数
v_count := v_symbol_count+1;
if v_int=1 then
target_str := substr(str,1,instr(str,symbol,1,v_int)-1);
elsif v_int>1 and v_int<=v_symbol_count then
target_str := substr(str,instr(str,symbol,1,v_int-1)+v_symbol_len,instr(str,symbol,1,v_int)-instr(str,symbol,1,v_int-1)-v_symbol_len);
elsif v_int = v_count then
target_str := substr(str,instr(str,symbol,1,v_int-1)+v_symbol_len);
else
target_str := substr(str,length(str)+1);
end if;
return target_str;
end;
示例: