공백을 특정 문자로 채우기(LPAD, RPAD)

 

문자열에서 문자열 이외에 공간을 특정 문자로 채우고자 하면 LPAD, RPAD 함수를 사용하시면 됩니다.

LPAD( 문자열, 찾는 문자, 데이터의 자리수, [공백에 채울 문자] )
RPAD( 문자열, 찾는 문자, 데이터의 자리수, [공백에 채울 문자] )

예제를 통해 직접 알아 봅시다.

 

SELECT 'ORACLE', 
    LPAD('ORACLE', 10, '*'), RPAD('ORACLE', 10, '*'),
    LPAD('ORACLE', 10), RPAD('ORACLE', 10)
FROM DUAL;

 

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

 

 

특정문자를 다른 문자로 바꾸기(REPLACE)

 

문자열에서 특정 문자만 다른 문자로 바꾸고자 하면 REPLACE 함수를 사용하시면 됩니다.

REPLACE( 문자열, 찾는 문자, [대체할 문자])

이때, 대체할 문자 를 생략하게 되면 해당 문자를 문자열에서 삭제합니다.

직원의 이름에서 알파벳 대문자 'A'를 소문자로 바꾸어 봅시다. 또, 아예 직원 이름에서 대문자 'A'를 삭제해 봅시다.

SELECT ENAME, REPLACE(ENAME,'A','a'), REPLACE(ENAME,'A')
FROM EMP;

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

특정 문자의 위치 찾기(INSTR)

 

문자열 데이터 안에서 특정 문자의 위치를 찾고자 할때는 INSTR 함수를 사용하시면 됩니다.

INSTR( 대상 문자열 데이터, 위치를 찾으려는 부분 문자, [위치를 찾기 시작할 대상 문자열의 데이터 위치(기본값은 1)],
[시작위치에서 찾으려는 문자가 몇번째인지 지정(기본값은 1)])

INSTR함수의 사용을 예제로 살펴 봅시다. 

SELECT ENAME, INSTR(ENAME, 'L'), INSTR(ENAME, 'L', 4), INSTR(ENAME, 'L', 2, 2)
FROM EMP;
  • ENAME, INSTR(ENAME, 'L') : 문자열의 처음부터 알파벳 'L'을 찾아, 처음으로 'L' 이 나오는 위치를 구합니다.
  • INSTR(ENAME, 'L', 4) : 문자열의 네 번째부터 알파벳 'L'을 찾아, 처음으로 'L' 이 나오는 위치를 구합니다.
  • INSTR(ENAME, 'L', 2, 2) : : 문자열의 두 번째부터 알파벳 'L'을 찾아, 두 번째로 'L' 이 나오는 위치를 구합니다.

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

 

문자열 일부를 추출하는 함수(SUBSTR)

 

단어에서 시작하는 첫 알파벳만 알고 싶거SUBSTR나, 전화번호에서 마지막 네자리 숫자만 알고 싶을때는 문자열 일부를 추출하는 함수인 SUBSTR를 사용합니다.

함수 설명
SUBSTR(문자열 데이터, 시작위치, [추출길이] ) - 문자열 데이터의 시작 위치부터 추출 길이 만큼의 문자열을 출력합니다.
- 시작위치가 음수인경우 문자열의 끝에서 부터 역산하여 위치를 찾아 해당 위치부터 추출 길이 만큼의 문자열을 출력합니다.
- 추출길이가 생략된 경우 문자열의 시작위치 부터 끝까지를 출력합니다.
이때, 시작위치가 음수이면 문자열의 끝에서 부터 역산한 위치부터 끝까지의 문자열을 출력합니다.  

 

 

SUBSTR 함수를 이용하여 다양하게 출력해 봅시다.

SELECT JOB,
    SUBSTR(JOB, 1, 2), SUBSTR(JOB, 3, 2), SUBSTR(JOB, 5), SUBSTR(JOB, -3, 2), SUBSTR(JOB, -5)
FROM EMP;
  • SUBSTR(JOB, 1, 2) : 문자열의 처음부터 2글자를 출력합니다.
  • SUBSTR(JOB, 3, 2) : 문자열의 처음에서 세 번째 글자부터 두 글자를 출력합니다.
  • SUBSTR(JOB, 5) : 문자열의 처음에서 다섯번째 글자부터 끝까지를 출력합니다.
  • SUBSTR(JOB, -3, 2) : 문자열의 끝에서 세번째 글자부터 두 글자를 출력합니다.
  • SUBSTR(JOB, -5) : 문자열의 끝에서 다섯번째 글자부터 끝까지를 출력합니다.

 

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

문자열 길이를 구하는 함수(LENGTH, LENGTHB)

 

함수 설명
LENGTH (문자열) 문자열 길이를 반환합니다.
LENGTHB(문자열) 문자열의 길이를 바이트 단위로 구해서 반환합니다.

 

특정 컬럼에 있는 문자열의 길이는 LENGTH 함수로 구하실 수 있습니다. 사원정보 테이블에서 이름과 직책에 사용된 문자열 길이를 구해 봅시다.

SELECT ENAME, LENGTH(ENAME), JOB, LENGTH(JOB)
FROM EMP;

 

해당 함수를 이용하여 이름이 5글자 이상직 직원들의 이름과 이름의 길이를 출력해 봅시다.

SELECT ENAME, LENGTH(ENAME)
FROM EMP
WHERE LENGTH(ENAME) >= 5;

 

문자열의 길이를 구하는 다른 함수로는 LENGTHB 함수가 있습니다. 이 함수는 문자열 데이터의 길이를 바이트 수로 반환합니다. 영문의 경우에는 LENGTH, LENGTHB 어느 함수를 사용해도 결과가 같지만 한글은 다른 결과를 보여 줍니다. 

SELECT LENGTH('한글'), LENGTHB('한글')
FROM DUAL;

이 예제를 통해 보면 한글은 3바이트로 처리 됨을 알 수 있습니다(과거에는 2 바이트로 처리 됨).

 

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

+ Recent posts