특정 필드값에서 AAA, BBB로 값을 가져온후 split으로 값을 분리했으나
이방법보다는 sql에서 -로 분리, ^로 분리해서 각각의 값을 가져올려고 합니다.
- 로 sql substr으로 분리해서 값을 가져오고,
또 가져온 값에서 ^ 로 분리해서 값을 가져오려고 합니다.
아래는 instr으로 첫번째는 가져오는데 그다음을 가져오려고하니 잘 되지 않습니다.
조언 부탁드립니다.
SELECT SUBSTR(AAA, 1, INSTR(AAA, '-', 1, 1) - 1),
SUBSTR(AAA, INSTR(AAA, '-', 1, 1) + 1),
???
아래 필드값입니다.
AAA 필드값 : 12345 -A^H^D-R-M
BBB 필드값 : A1CD -D^H-R-M
WITH T AS ( SELECT '12345 -A^H^D-R-M' aaa, 'A1CD -D^H-R-M' bbb FROM DUAL ) SELECT A.aaa, B.bbb FROM ( SELECT LEVEL AS LV, REGEXP_SUBSTR(aaa, '[^-|\^]+', 1, LEVEL) AS aaa, NULL AS bbb FROM T CONNECT BY LEVEL <= REGEXP_COUNT(AAA, '[^-|\^]+') ) A FULL OUTER JOIN ( SELECT LEVEL AS LV, NULL AS aaa, REGEXP_SUBSTR(bbb, '[^-|\^]+', 1, LEVEL) AS bbb FROM T CONNECT BY LEVEL <= REGEXP_COUNT(bbb, '[^-|\^]+') ) B ON ( A.LV = B.LV )
죄송합니다만 ㅠ
ORA-00904:"REGEXP_COUNT" : 부적합한 식별자
라고 에러메시지가 나옵니다.
다시한번 봐주시면 감사하겠습니다.
원하시는 결과자료를 보여주시면 좋겠습니다.
AAA 필드값 : 12345 -A^H^D-R-M
BBB 필드값 : A1CD -D^H-R-M
regexp_substr((replace(AAA,' ','')), '[^-]+') as a1,
regexp_substr((replace(BBB,' ','')), '[^-]+') as a2
-->
a1 : 12345
a2 : A1CD
여기까지는 값을 가져왔습니다.
그런데, ㅠ
두번째 - 위치 뒤에 있는 A^H^D-R-M 에서 다시 - 로 분리해서 또다시 A^H^, D, R, M 으로 분리하구요.
다시 A^H^ 값을 ^로 분리해서 A, H로 나누려고 합니다.
최종 결과값은 아래입니다.
---------------------------------------------------
레코드1 | 12345 | A | H | D | R | M
레코드2 | A1CD | D | H | | R | M
---------------------------------------------------
제가 생각하는 부분을 글로 표현하다보니 잘 전달이 되지 않네요. 죄송합니다.
WITH T AS ( SELECT '12345 -A^H^D-R-M' aaa, 'A1CD -D^H-R-M' bbb FROM DUAL ) SELECT 'RECODE1 |' AS nm, REGEXP_REPLACE(aaa, '[-|\^| ]+', ' | ') FROM T UNION ALL SELECT 'RECODE2 |' AS nm, REGEXP_REPLACE(bbb, '[-|\^| ]+', ' | ') FROM T
감사드립니다.^^
덕분에 좋은 정보 알게되었습니다.
오늘도 즐거운 하루 보내십시오~~
WITH t AS ( SELECT 'AAA' cd, '12345 -A^H^D-R-M' v FROM dual UNION ALL SELECT 'BBB', 'A1CD -D^H-R-M' FROM dual ) SELECT cd , v , REGEXP_SUBSTR(v, '[^-]+', 1, 1) v1 --, REGEXP_SUBSTR(v, '[^-]+', 1, 2) v2 , REGEXP_SUBSTR(REGEXP_SUBSTR(v, '[^-]+', 1, 2), '[^^]+', 1, 1) v2_1 , REGEXP_SUBSTR(REGEXP_SUBSTR(v, '[^-]+', 1, 2), '[^^]+', 1, 2) v2_2 , REGEXP_SUBSTR(REGEXP_SUBSTR(v, '[^-]+', 1, 2), '[^^]+', 1, 3) v2_3 , REGEXP_SUBSTR(v, '[^-]+', 1, 3) v3 , REGEXP_SUBSTR(v, '[^-]+', 1, 4) v4 FROM t ;
와~~~~%^^
진심으로 감사드립니다.
'[^^]+' 는 생각지도 못했습니다.
감사드리고, 오늘도 즐거운 하루 보내십시오.
앞으로도 많은 조언 부탁드립니다.^^