数据库解决获取一个字段parent中某个字符串child第一次和第二次出现的位置之间的内容cut

发布时间 2023-10-12 16:42:51作者: 德邦总管

下面就postgresql数据和oracle数据库分别提供两种解决方法

--postgresql数据库解决获取一个字段parent中某个字符串child第一次和第二次出现的位置之间的内容cut
--方法一
select
case when position(child in parent)>0
then substring(parent, position(child in parent)+length(child),
position(child in regexp_replace(parent, child,'')::text)+length(child)-
position(child in parent)-length(child))
else null end as cut;
--方法二
select
case when position(child in parent)>0
then split_part(parent, child, 2) else null end as cut;

--oracle数据库解决获取一个字段中某个字符串第一次和第二次出现的位置之间的内容
--方法一
select
case when instr(parent, child,1,1)>0
then substr(parent, instr(parent, child,1,1)+length(child),instr(parent,child,1,2)-instr(parent, child,1,1)-length(child))
else null end as cut
from dual;
--方法二
select
case when instr(parent, child,1,1)>0
then replace(regexp_substr(parent, child||'.+'||child, 1, 1),child,'')
else null end as cut
from dual;