当我尝试使用下面的函数获取结果时,我只能在SH_CHGDESC下获得第一个字符串,即FRTRV-1
SH_CHGDESC可用的字符串是:FRTRV-11; SFARV-13; SCRRV-12
想获取所有可用的字符串
If InStr ({pipe.SH_CHGDESC}, "1;") >0
then mid({pipe.SH_CHGDESC},1,InStr ({pipe.SH_CHGDESC}, "1;")-1)
请提出建议。
答案 0 :(得分:0)
我认为您只是想将分隔的字符串拆分为多个值;在CTE中输入您的字符串:
with pipe (SH_CHGDESC) as (
select 'FRTRV-11;SFARV-13;SCRRV-12' from dual
)
select regexp_substr(sh_chgdesc, '(.*?)(;|$)', 1, level, null, 1)
from pipe
connect by level < regexp_count(sh_chgdesc, '(.*?)(;|$)');
REGEXP_SUBSTR(SH_CHGDESC,'
--------------------------
FRTRV-11
SFARV-13
SCRRV-12
如果您要从表中获取字符串并一次处理多个行,则要复杂一些,但是如果pipe
表上有主键/唯一键,则可以处理。