功能组合无法正常工作

时间:2018-06-26 10:57:17

标签: sql oracle

当我尝试使用下面的函数获取结果时,我只能在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)

请提出建议。

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表上有主键/唯一键,则可以处理。