위쪽 부분이 입력값 입니다. 하지만 저는 이중에서 { }안에 있는 정보 그리고 AND, OR, NOT, (, )의 정보만
가져오고 싶습니다. 가져오고 싶은 결과물은 아래 부분입니다.
읽어주셔서 감사합니다.
F6011: AAA-F6011-BOM{AAA83}
F6011: AAA-F6011-BOM{AAA78} AND JAG-TAP131T-BOM{JAG10} AND JAA-F6011-BOM{JAA47}
F6011: FAC-TAP131T-BOM{FAC30} AND KAJ-TAP131T-BOM{KAJ10} AND VAM-TAP131T-BOM{VAM00} AND CAD-TAP131T-BOM{CAD10} AND EAC-F6011-BOM{EAC00}
F6011: AAA-F6011-BOM{AAA80} OR AAA-F6011-BOM{AAA78} AND AAE-F6011-BOM{AAE16} AND EAA-F6011-BOM{EAA31} OR EAA-F6011T-BOM{EAA32} AND EAE-F6021-BOM{EAE40}
F6011: SAG-TAP131T-BOM{SAG20} AND SAK-TAP131T-BOM{SAK10}
F6011: NOT (SAG-TAP131T-BOM{SAG20}) AND SAK-TAP131T-BOM{SAK00}
AAA83
AAA78 AND JAG10 AND JAA47
FAC30 AND KAJ10 AND VAM00 AND CAD10 AND EAC00
AAA80 OR AAA78 AND AAE16 AND EAA31 OR EAA32 AND EAE40
SAG20 AND SAK10
NOT (SAG20) AND SAK00
WITH T1(NM) AS ( SELECT 'F6011: AAA-F6011-BOM{AAA83}' FROM DUAL UNION ALL SELECT 'F6011: AAA-F6011-BOM{AAA78} AND JAG-TAP131T-BOM{JAG10} AND JAA-F6011-BOM{JAA47}' FROM DUAL UNION ALL SELECT 'F6011: FAC-TAP131T-BOM{FAC30} AND KAJ-TAP131T-BOM{KAJ10} AND VAM-TAP131T-BOM{VAM00} AND CAD-TAP131T-BOM{CAD10} AND EAC-F6011-BOM{EAC00}' FROM DUAL UNION ALL SELECT 'F6011: AAA-F6011-BOM{AAA80} OR AAA-F6011-BOM{AAA78} AND AAE-F6011-BOM{AAE16} AND EAA-F6011-BOM{EAA31} OR EAA-F6011T-BOM{EAA32} AND EAE-F6021-BOM{EAE40}' FROM DUAL UNION ALL SELECT 'F6011: SAG-TAP131T-BOM{SAG20} AND SAK-TAP131T-BOM{SAK10}' FROM DUAL UNION ALL SELECT 'F6011: NOT (SAG-TAP131T-BOM{SAG20}) AND SAK-TAP131T-BOM{SAK00}' FROM DUAL ) SELECT REGEXP_SUBSTR(NM,'NOT|{[^}]*|OR|AND',1,RN.NO) NM, RN.NO NO FROM T1,(SELECT ROWNUM NO FROM DUAL CONNECT BY LEVEL <=12) RN WHERE RN.NO <= 12 -- 여기서 조금만 수정하심 될 거 같아요.
WITH T AS ( SELECT 'F6011: AAA-F6011-BOM{AAA83}' TXT FROM DUAL UNION ALL SELECT 'F6011: AAA-F6011-BOM{AAA78} AND JAG-TAP131T-BOM{JAG10} AND JAA-F6011-BOM{JAA47}' TXT FROM DUAL UNION ALL SELECT 'F6011: FAC-TAP131T-BOM{FAC30} AND KAJ-TAP131T-BOM{KAJ10} AND VAM-TAP131T-BOM{VAM00} AND CAD-TAP131T-BOM{CAD10} AND EAC-F6011-BOM{EAC00}' FROM DUAL UNION ALL SELECT 'F6011: AAA-F6011-BOM{AAA80} OR AAA-F6011-BOM{AAA78} AND AAE-F6011-BOM{AAE16} AND EAA-F6011-BOM{EAA31} OR EAA-F6011T-BOM{EAA32} AND EAE-F6021-BOM{EAE40}' FROM DUAL UNION ALL SELECT 'F6011: SAG-TAP131T-BOM{SAG20} AND SAK-TAP131T-BOM{SAK10}' FROM DUAL UNION ALL SELECT 'F6011: NOT (SAG-TAP131T-BOM{SAG20}) AND SAK-TAP131T-BOM{SAK00}' FROM DUAL ) SELECT LISTAGG(SUBTXT,' ') WITHIN GROUP(ORDER BY LV) TXT FROM ( SELECT TXT, REGEXP_SUBSTR(TXT,'{[^}]*}|AND|OR|NOT|\(|\)',1,LV) SUBTXT, LV FROM T , (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL < 20) WHERE REGEXP_COUNT(TXT,'{[^}]*}|AND|OR|NOT|\(|\)') >= LV ) GROUP BY TXT