본문 바로가기
Database

[오라클] 문자처리 주요 함수

by 서피 2021. 3. 8.

1. TRIM

문자 양 옆의 공백 제거

select trim('   오라클    ') from dual;

 

실행결과

 

 

 

 

 

2. LTRIM RTRIM

문자 왼쪽, 오른쪽의 공백만 제거

select ltrim('   오라클   '), rtrim('   오라클   ')  from dual;

 

실행결과

 

특정 문자 모두 제거

select ltrim('000123456000', '0'), rtrim('000123456000', '0') from dual;

왼쪽 0 모두 제거, 오른쪽 0 모두 제거

 

실행결과

LEADING, TRAILING 을 이용할 수 있다.

select trim(leading 'z' from 'zzz오라클zzz'), trim(trailing 'z' from 'zzz오라클zzz') from dual;

leading - 앞서 나오는(앞부분) 문자 제거

trailing - 뒤따라 나오는(뒷부분) 문자 제거

trim 의 'z' 부분에는 단 하나의 문자만 들어갈 수 있다. 예를 들어 'zz'를 넣으면 오류가 발생한다.

 

 

 

 

3. LPAD RPAD

글자 수 맞추기

-- employee테이블에서 사원들의 이메일 정보를 가져옴.
-- 왼쪽부터 # 채워서 20자리 맞춤. 오른쪽부터 # 채워서 20자리 맞춤.
select lpad(email, 20, '#') as "lpad", rpad(email, 20, '#') as "rpad" from employee;

 

실행 결과

 

 

 

4. SUBSTR

특정 위치의 문자 가져오기

-- hello oracle 중 3번째 자리부터 5개 문자 가져오기
select substr('hello oracle', 3, 5) from dual;

공백 또한 자릿수에 포함된다.

 

실행 결과

같은 기능의 SUBSTRB()도 있다.

SUBSTRB(a, b, c)

a문자열 중 b자리부터 c바이트만큼 가져온다.

 

 

 

 

5. DISTINCT

중복 제거하기

-- employee의 성만 중복 제거 후 출력
select distinct substr(emp_name, 1, 1)  from employee;

-- 컬럼 여러개를 넣으면 모두 중복 제거됨.
select distinct substr(emp_name, 1, 1), substr(emp_name, 1, 1)  from employee;

distinct 뒤에 오는 모든 컬럼에 대해 중복을 제거한다.

 

실행 결과

 

 

 

6. REPLACE

특정 문자열 치환

select replace('this is oracle', 'oracle', 'database') from dual;

1번 인자에서 2번 인자를 3번인자로 변경한다.

여러개의 문자열을 찾으면 모두 변환한다.

 

실행 결과

 

7. INSTR

특정 문자열 위치 찾기

select instr(email, '@') from employee;

email 중에서 @가 몇 번째에 나오는지 찾기.

 

실행 결과

 

 

 

 

댓글