Oracle自定义函数,判断一个以逗号拼接的字符串是否完全包含另外一个字符串,与拼接顺序无关

前端之家收集整理的这篇文章主要介绍了Oracle自定义函数,判断一个以逗号拼接的字符串是否完全包含另外一个字符串,与拼接顺序无关前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

现有三个逗号拼接的字符串:A:'86,8611,8612,8613' B: '86,8612' C:‘8612,8614’

其中A完全包含B ,

A不完全包含C,

使用如下函数

selecttestSplit(A,B) from dual; --结果为1 即:完全包含

selecttestSplit(A,C) from dual; --结果为0 即:不完全包含

当您需要处理两个类似此情况的字符串时,可以使用如下Oracle自定义函数


create or replace function testSplit(v_a varchar2,v_b varchar2)

return number as counta number; countb number; countc number; Begin counta := 0; countb := 0; countc := 0; select count(1) into counta from (SELECT REGEXP_SUBSTR(v_a,'[^,]+',1,rownum) deptida FROM DUAL CONNECT BY ROWNUM <= LENGTH(v_a) - LENGTH(REPLACE(v_a,','')) + 1) aa,(SELECT REGEXP_SUBSTR(v_b,rownum) deptidb FROM DUAL CONNECT BY ROWNUM <= LENGTH(v_b) - LENGTH(REPLACE(v_b,'')) + 1) bb where aa.deptida = bb.deptidb; select count(1) into countb from (SELECT REGEXP_SUBSTR(v_b,'')) + 1) bb; if counta = countb then countc := 1; return countc; end if; return countc; end testSplit;

猜你在找的Oracle相关文章