정규표현식을 사용한 특정 문자열을 변경(추가) 하고 싶습니다 0 5 1,947

by chrome [SQL Query] 정규식 REGEXP_REPLACE [2017.03.29 15:05:03]


'(SELECT A.NAME , B.COMP FROM TXT_FAT.TABLE_A A, FAT.TABLE_B B WHERE A.KEY = B.KEY)'

 

의 문장을 검색하여 TXT_ 로 시작하는 테이블명 뒤에 @DBLINK 명을 붙이고 싶습니다. 

변경결과는 

'(SELECT A.NAME , B.COMP FROM TXT_FAT.TABLE_A@DBLINK  A, FAT.TABLE_B B WHERE A.KEY = B.KEY)'

@DBLINK 를 추가한 로 나오겠죠. 

 

문장에서 TXT_를 찾아서 ...까지는 뭐 문제 없는데 

그 뒤에 .TABLE_A 을 지나 그 뒤로 @DBLINK를 붙여준다는게 여간 까다롭지 않내요 ㅜ,.ㅜ 

도움 부탁드립니다. 으아....  나 돌아갈래!!!

 

* 꼭 정규표현식을 써야하는것은 아닙니다만, 쿼리 중간에 적어야해서 

 

by jkson [2017.03.29 15:18:42]
WITH T AS
(
SELECT '(SELECT A.NAME , B.COMP FROM TXT_FAT.TABLE_A A, FAT.TABLE_B B WHERE A.KEY = B.KEY)' TXT FROM DUAL
)
SELECT REGEXP_REPLACE(TXT,'(TXT_FAT\.|txt_fat\.)([^ ]+)','\1\2@DBLINK') 
FROM T

 


by chrome [2017.03.29 15:27:24]

고맙습니다. ! 

 

SELECT REGEXP_REPLACE(TXT,'(TXT_\S*\.)([^ ]+)','\1\2@DBLINK') 

 

요렇게 바꿔서 적용했습니다! 


by jkson [2017.03.29 15:35:41]

txt_fat이 아니라 txt_군요;;


by 마농 [2017.03.29 15:34:04]

REGEXP_REPLACE(txt, '(txt_[^ ]+\.[^ ]+)', '\1@DBLINK', 1, 1, 'i')


by chrome [2017.03.29 16:54:04]

요런 방법도 있내요! 멘붕 머리속이 혼란합니다. 크 

하나 하나 공부할땐 알겠다 싶은데도.ㅜ,.ㅜ 

응용은 어렵내요.. 또르르. 고맙습니다.! 

 

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