다른 특정문자 치환 방법 0 5 850

by 고수로. [2019.10.11 11:33:32]


안녕하세요.

오라클의 한가지 궁굼한 부분이 있어 문의드립니다.

데이터가 아래와 같은 형태가 있습니다.

Colum : company_name

위 칼럼 값 : {0} 업체 {1} 등급 {2} 신용

즉 위 { } 로 되어있는 세가지 값에 대해서 제가 java에서 넘긴 값으로 치환을 하고싶습니다.

원하는 값 ex) : 태광 업체 B 등급 좋은 신용

replace를 여러번 써서 해결할수 있으나, 좀 비효율적인듯 싶어. 좋은 방식이 있을까요

감사합니다.

by jkson [2019.10.11 13:35:33]

{0} 업체 {1} 등급 {2} 신용 ->  고정인가요?

{0} 업체 {1} 등급 {2} 신용 {3} xxx {4} xxx

이런식으로 유동적인가요?


by 고수로. [2019.10.11 13:44:41]

{} 는 예로 들은것과 같이 고정적입니다. 즉 3개 고정입니다.


by jkson [2019.10.11 13:49:52]
with t as
(
select '{0} 업체 {1} 등급 {2} 신용' txt from dual
)
select regexp_replace(txt,'\{0\}([^{]+)\{1\}([^{]+)\{2\}([^{]+)',:param) txt from t

param형식은 '태광\1B\2좋은\3'

이렇게 처리하시든지

각각 받아서 :param1||'\1'||:param2||'\2'||:param3||'\3' 처리하시든지 하시면 될듯요.

 


by 고수로. [2019.10.11 14:32:15]

감사합니다.

생각보다 파람 가공을 해줘야 가능한거였군요.


by 마농 [2019.10.14 12:24:30]

무거운 정규식 사용 보다는 가벼운 Replace 3 번 쓰는게 더 효율적일 듯 합니다.

REPLACE(REPLACE(REPLACE(company_name
, '{0}', :p0)
, '{1}', :p1)
, '{2}', :p2)

 

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