Oracle字符串拆分实例详解(oracle字段截取)一看就会

随心笔谈2年前发布 admin
206 0 0

文章摘要

本文介绍了名为`FIND_IN_SET`的SQL函数,用于在一个字符串中查找另一个字符串的特定分割部分。该函数接受三个参数:两个目标字符串`piv_str1`和`piv_str2`,以及一个分隔符`p_sep`(默认值为逗号)。函数通过递归分割字符串,检查每个分割部分是否等于目标字符串`piv_str1`,并返回找到的分割部分的位置编号。如果字符串中包含多个目标字符串,函数会返回最后一个找到的位置编号。如果字符串中不包含目标字符串,则返回`0`。

CREATE OR REPLACE FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 :=’,’)
RETURN NUMBER IS
l_idx number:=0;
str varchar2(500);
piv_str varchar2(500) :=piv_str2;
res number:=0;
loopIndex number:=0;
BEGIN
IF instr(piv_str, p_sep, 1)=0 THEN
IF piv_str=piv_str1 THEN
res:=1;
END IF;
ELSE
LOOP
l_idx :=instr(piv_str,p_sep);
loopIndex:=loopIndex+1;
IF l_idx > 0 THEN
str:=substr(piv_str,1,l_idx-1);
IF str=piv_str1 THEN
res:=loopIndex;
EXIT;
END IF;
piv_str :=substr(piv_str,l_idx+length(p_sep));
ELSE
IF piv_str=piv_str1 THEN
res:=loopIndex;
END IF;
EXIT;
END IF;
END LOOP;
END IF;
RETURN res;
END FIND_IN_SET;

© 版权声明

相关文章