개발공작소
article thumbnail
728x90

 

 

 

기본 문법

SELECT REGEXP_REPLACE([컬럼명], '[변경하고 싶은 값1]|[변경하고 싶은 값2]', [변경된 값]) AS [컬럼명] FROM [테이블명]

 

예제

select REGEXP_REPLACE(user_name , '둘리|독산|성', '###') from public.JOINTABLE;

JOINTABLE에서 user_name 컬럼의 속성이
둘리,독산,성 인 녀석들을 전부 ###으로 변경해줌

왼쪽은 기본 select이고, 오른쪽은 REGEXP_REPLACE를 활용한 위의 쿼리문을 실행한 결과

 

근데 하다보니, 뭐가 문제인지는 모르겠지만, 영어인 녀석들은 REGEXP_REPLACE 함수가 제대로 먹지 않음..

그래서 첫번째 값은 제대로 변경이 되는데 | 다음에 있는 두번째 값들은 변경이 되지 않는데, 이유를 모르겠다..

 

아래는 자주 쓸 것 같은 정규식 몇개를 모아놓았다. 필요하면 갖다 쓰도록 하자.

-- 숫자를 전부 특정 문자로 변경 ( 중간에 .이 들어간 소수는 뒷자리 변경안됨 )
select regexp_replace([컬럼명], '[[:digit:]]+', [변경값]) from [테이블명];

-- 숫자를 제외한 모든(문자/특수문자)를 제거 
select regexp_replace([컬럼명], '\D', [변경값], 'g') from [테이블명];

-- 특수문자 제거
SELECT regexp_replace([컬럼명], '[^a-zA-Z]', '') FROM [테이블명];

 

 

오라클에도 REGEXP_REPLACE  함수는 있음. 필요하면 같이 쓸 수 있을 것 같다.

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!