정규식 좀 부탁드립니다. 0 2 793

by 곰탱이 [SQL Query] 정규식 [2018.08.16 21:42:09]


정규식좀 간단하게 부탁드립니다.

컬럼값에서 특정문자에 대해 치환을 하려 합니다.

컬럼값의 LENGTH는 무조건 짝수인데

VAL에서 찾은 값의 POSITION은 홀수로 시작한 값만 치환하려 합니다.

 

아래 쿼리를 보면

'BB', 'CC' 값을 '00'으로 치환하는데 10번째 POSITION 의 BB는 짝수로 시작하기 때문에 치환을 하지 않았습니다.

 

아래 부분이 지저분한데 좀 깔끔하게 할 수 없을까요?

 

 

WITH TBL AS 
(
    SELECT 'AABBCCDDZBBZ'   VAL FROM DUAL
)
SELECT 
        VAL 
    ,   REPLACE((REGEXP_REPLACE(REGEXP_REPLACE(VAL, '(.{2})', '\1^'), 'BB|CC', '00')), '^')                 AS T1
FROM  TBL

 

-- 결과값

VAL                       T1

-----------------------------------------------

AABBCCDDZBBZ     AA0000DDZBBZ

by 마농 [2018.08.17 09:33:10]
WITH tbl AS
(
SELECT 'AABBCCDDZBBZ' val FROM dual
)
SELECT val
     , REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(val, '(..)', '^\1'), 'BB|CC', '00'), '^') t1
  FROM tbl
;

 


by 신이만든지기 [2018.08.17 11:18:36]

문자열을 2자리씩 구분한 후 치환하는 방식의 참신한(?) 정규식 사용법이네요.

저도 해보려고 했는데,  이미 정답을 봐버려서인지, 질문자님과 마농님 이상의 해결방법이 안나오네요.^^;

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입