0!1DDDFSDDFSD02@-9874-5612AWE!@
라는 문자열에서 숫자만 추출하고 싶다면, 정규식을 사용하는 것이 가장 편하고, 빨리 생각나는 방법이다.
하지만 낮은 오라클 버전에선 정규식을 사용할 수 없다.
그 때 사용할 수 있는 것이 바로 TRANSLATE함수다.
숫자만 추출할 때
SELECT TRANSLATE('0!1DDDFSDDFSD02@-9874-5612AWE!@','0123456789'||'0!1DDDFSDDFSD02@-9874-5612AWE!@' ,'0123456789') AS TRANSLATE FROM DUAL;
TRANSLATE(인자1, 인자2, 인자3) 이라고 할 때,
인자 1에 있는 숫자만 남기기 => 숫자는 0~9까지
인자 2 인 치환대상에 0123456789+ 인자 1(적용대상)을 적고
인자 3(치환 문자열)에 0~9를 적으면 '0!1DDDFSDDFSD02@-9874-5612AWE!@'의 숫자가 아닌 것들은 다 제거된다.
반대로, 문자만 추출에도 이용 가능함
SELECT TRANSLATE('0!1DDDFSDDFSD02@-9874-5612AWE!@','X0123456789' ,'X') AS TRANSLATE FROM DUAL;
저기 들어가는 X는 아무 의미없음, 공백도 가능
인자 1에 x가 있다면 x로 바꾸고, 0123456789의 경우 인자1, 2엔 있지만 3에 없으니까 1에서 삭제될것
=> 인자 1에서 숫자만 삭제, 인자 2에 인자 1에 있는 특문, 영문자들이 없으므로 그대로 그것들만 남게 된다.
SELECT TRANSLATE('0!1DDDFSDDFSD02@-9874-5612AWE!@',' 0123456789' ,' ') AS TRANSLATE FROM DUAL;
'데이터베이스 > 오라클DB' 카테고리의 다른 글
토드(Toad)에서 다른 스키마의 테이블로 데이터 복사하기 (0) | 2024.03.25 |
---|---|
인덱스란? (1) | 2023.08.29 |