본문 바로가기

IT/오라클

오라클 REPLACE와 TRANSLATE 문자열 변경 ,숫자만 남기기

1) REPLACE

 

지정된 문자열을 치환한다. 

SELECT REPLACE('a1b2c4','a1') FROM DUAL;

-> 결과는 a1을 지운 결과 'b2c4'가 나온다.

 

SELECT REPLACE('a1b2c4','a1','BB') FROM DUAL;

-> 결과는 a1을 BB로 대체해 'BBb2c4'가 나온다

 

2) TRANSLATE

 

지정된 문자를 치환한다.

 

SELECT TRANSLATE('a1a2a3a4a5','a','A') FROM DUAL;

->결과 : A1A2A3A4A5

 

SELECT TRANSLATE('a1b2c3d4e5','abcde','01234') FROM DUAL;

->결과 : 0112233445

 

SELECT TRANSLATE(VAR_PHONE, '1234567890'||VAR_PHONE, '1234567890')

FROM(

SELECT '안9녕8하7세6요5 4H3 2입1니0다.*.*' as VAR_PHONE FROM DUAL);

-> 결과: 9876543210

 

3) 차이점 

 

REPLACE와 TRANSLATE의 차이점은 문자열 단위, 문자단위의 차이이다.

 

4) 응용

 

CREATE OR REPLACE FUNCTION  parse_int(    -- 함수이름

  VAR_String VARCHAR2 -- 변수

)

RETURN VARCHAR2 

IS

VAR VARCHAR2(13);  --var 로 리턴한다

BEGIN         

VAR :=TRANSLATE(VAR_String, '1234567890'||VAR_String, '1234567890') ; 

    RETURN VAR;                      --var에 var_String에서 숫자가 아닌 것들을 제외하고 저장

END parse_int;        

 

parse_int 라는 함수를 만들어서 숫자를 제외한 모든 문자를 제거하고 리턴한다.