특정 패턴 문자열을 변환하고 싶습니다. 0 1 584

by DBATJ [SQL Query] [2019.04.22 14:05:54]


안녕하세요 최근 이행 스크립트를 작성하는데 오너별, db link를 추가한 이행 스크립트 두가지를 모두 관리하게 되었습니다. 예를들어

SELECT * FROM ADM.MDC_ABS_INF;

SELECT * FROM ADM_11.MDC_ABS_INF@DBLINK_11;

이런식으로 두 가지패턴의 쿼리를 관리해야되는데 현재 이행스크립트도 많고, 프로그램을 개발해 돌리니까 쿼리 구조가 무너지는 문제가 발생해, SQL QUERY만으로 해결하는 방법이 필요합니다.

테이블명으로 컬럼을 하나 파서 REPLACE(SCRIPT, ADM_11. || TABLE_NAME, ADM. || TABLE_NAME || DBLINK_11 )  이런식으로도 진행해봤지만 테이블 조인이 일어나는 경우도 많고 조인할 테이블 종류도 많아서 고민입니다.. 도와주시면 감사하겠습니다.

by 마농 [2019.04.22 15:12:00]
WITH t_script AS
(
SELECT 'SELECT * FROM ADM.MDC_ABS_INF;' sql FROM dual
UNION ALL SELECT 'SELECT *
FROM adm.MDC_ABS_INF
LEFT OUTER JOIN Adm.xxx
ON 1=1;'    FROM dual
UNION ALL SELECT 'SELECT *
FROM adm.MDC_ABS_INF
, Adm.xxx
WHERE 1=1;' FROM dual
)
SELECT sql
     , REGEXP_REPLACE(sql, ' (ADM)(\.[^ ;,' ||CHR(13)||CHR(10)|| ']+)', ' \1_11\2@DBLINK_11', 1, 0, 'i') sql_2
  FROM t_script
;

 

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