오라클 정규표현식 질문 0 1 561

by Thomas [SQL Query] 정규표현식 특정문자열 [2022.02.15 13:23:46]


'년도:#{년도} 월:#{월} 일:#{일} 시간1:#{시간1} 시간2:#{시간2} URL:#{URL} 상품:#{상품} 상품설명서:#{상품설명서} 상품설명서PDF-URL:#{상품설명서PDF-URL} 한도제한해제 URL#{한도제한해제 URL} 고객ID:#{고객ID} 계좌번호:#{계좌번호} 이름:#{이름} 금액:#{금액}원 입금 잔액:#{잔액}원'

 

위 문자열 중 #{특정문자열} 형식으로 된 문자열을 검색할 때 패턴 매칭 할 수 있게 (.*) 로 바꾸려고 하는데요.(바인딩변수 문자열)

#{특정문자열} => (.*)

 

SELECT REGEXP_REPLACE('년도:#{년도} 월:#{월} 일:#{일} 시간1:#{시간1} 시간2:#{시간2} URL:#{URL} 상품:#{상품} 상품설명서:#{상품설명서} 상품설명서PDF-URL:#{상품설명서PDF-URL} 한도제한해제 URL#{한도제한해제 URL} 고객ID:#{고객ID} 계좌번호:#{계좌번호} 이름:#{이름} 금액:#{금액}원 입금 잔액:#{잔액}원', '#\{[A-Z-가-힇-0-9]*\}', '(.*)') FROM DUAL;

위 쿼리문 결과가 아래와 같이 나옵니다.

년도:(.*) 월:(.*) 일:(.*) 시간1:(.*) 시간2:(.*) URL:(.*) 상품:#{상품} 상품설명서:#{상품설명서} 상품설명서PDF-URL:#{상품설명서PDF-URL} 한도제한해제 URL#{한도제한해제 URL} 고객ID:(.*) 계좌번호:#{계좌번호} 이름:(.*) 금액:(.*)원 입금 잔액:(.*)원

 

되는게 있고 안되는게 있는데 바인딩변수(#{특정문자열}) 형태의 모든 문자열를 변환할 수 있게 '#\{[.*]*\}' 요런식은 없을까요?

참고로 한 문장에 몇개의 바인딩변수 형태의 문자열이 있을지는 알 수 없습니다. Database는 오라클 입니다.

by 마농 [2022.02.15 14:51:11]

replace 관련 질문에는 답을 드릴 수는 있지만...
이 결과를 다시 또 정규식에 이용하려는 듯 한데.
(.*) 로 바꾸는 것이 맞을런지? 뭔가 잘못 접근하고 있다는 생각이 듭니다.
 

SELECT REGEXP_REPLACE(v, '#{[^}]+}', '(.*)') x
  FROM (SELECT '년도:#{년도} 월:#{월} 일:#{일} 시간1:#{시간1} 시간2:#{시간2} URL:#{URL} 상품:#{상품} 상품설명서:#{상품설명서} 상품설명서PDF-URL:#{상품설명서PDF-URL} 한도제한해제 URL#{한도제한해제 URL} 고객ID:#{고객ID} 계좌번호:#{계좌번호} 이름:#{이름} 금액:#{금액}원 입금 잔액:#{잔액}원' v FROM dual)
;

 

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