728x90

안녕하세요. 바로 아래 글에서 인포믹스에서 정규식 패턴 변경 함수인 REGEX_REPLACE 를 테스트했습니다.

대신 REGEX_REPLACE 함수는 인포믹스 12버전에서만 지원되기에 질문자 분이 이하 버전에서 가능한 방법을 다시 질문하셨더군요.

마농님, 정상규님 댓글 감사합니다.

 

마농님이 올려주신 오라클에서의 쿼리는 적용이 되는데.

인포믹스에서는 12버전이 아니라 적용이 안되네요.

regex_replace 를 사용하지 않고 인포믹스에서도 가능할까요??


해당 쿼리를 다시 데이터베이스 사랑넷의 '마농'님께서 기본적인 문자열 함수를 사용해서 쿼리를 재작성하신 것으로 테스트해봤습니다.

오라클 기본적인 문자함수들로만 구성해 봤습니다.
인포믹스에 맞게 고쳐 보세요.

 

WITH t AS
(
SELECT '문자001' v FROM dual
UNION ALL SELECT '문자열01'    FROM dual
UNION ALL SELECT '01문자001'   FROM dual
UNION ALL SELECT '121문자열01' FROM dual
UNION ALL SELECT '문자002'     FROM dual
UNION ALL SELECT '문자003'     FROM dual
UNION ALL SELECT '문자1'       FROM dual
UNION ALL SELECT '문자'        FROM dual
UNION ALL SELECT '문자11A03'   FROM dual
)
SELECT v
     , SUBSTR(v, 1, x-y) || LPAD(SUBSTR(v, x-y+1, 4), 4, '0') z
  FROM (SELECT v
             , x
             , CASE WHEN SUBSTR(v, x-0, 1) BETWEEN '0' AND '9' THEN 1
             + CASE WHEN SUBSTR(v, x-1, 1) BETWEEN '0' AND '9' THEN 1
             + CASE WHEN SUBSTR(v, x-2, 1) BETWEEN '0' AND '9' THEN 1
             + CASE WHEN SUBSTR(v, x-3, 1) BETWEEN '0' AND '9' THEN 1
               ELSE 0 END ELSE 0 END ELSE 0 END ELSE 0 END AS y
          FROM (SELECT v, LENGTH(v) x FROM t) a
        ) a
;


인포믹스 11버전에서 그대로 사용해도 잘 수행되었습니다.

참고로 WITH문은 인포믹스에서 사용할 수 없습니다.

정말 멋지네요. 알려주신 '마농'님께 감사한 마음이 드는군요.



728x90

+ Recent posts