쌓고 쌓다

[Oracle] 문자열 조작(변환) 함수 본문

프로그래밍/SQL

[Oracle] 문자열 조작(변환) 함수

승민아 2022. 10. 8. 13:14

INITCAT 함수

인수로 입력되는 칼럼이나 표현식의 값에서 첫 번째 영문자를 대문자로 변환

INITCAP (expr | column)

 

- 김영균 학생의 아이디를 출력한다. (첫문자는 대문자로)

SELECT name, userid, INITCAP(userid)
    FROM student
    WHERE name='김영균';

 

LOWER, UPPER 함수

인수로 주어진 문자열 전체를 소문자 또는 대문자로 변환

LOWER( expr | column )
UPPER( expr | column )

 

- 학번이 20101인 학생의 아이디를 소문자와 대문자로 변환

SELECT name, userid, LOWER(userid), UPPER(userid)
    FROM student
    WHERE studno=20101;

 

LENGTH, LENGTHB 함수

문자열의 길이, 바이트 수를 반환

LENGTH ( expr | column )
LENGTHB ( expr | column )

 

- 부서 이름을 문자 수(길이)와 바이트 수로 각각 출력

SELECT dname, LENGTH(dname), LENGTHB(dname)
    FROM department;

 

문자 조작 함수

종류 의미
CONCAT 두 문자열을 결합, '||'와 동일 CONCAT('sql', 'plus') -> sqlplus
SUBSTR 문자열 일부를 추출 SUBSTR('SQL*Plus', 5, 4) -> Plus
INSTR 특정 문자의 첫번째 위치를 반환 INSTR('SQL*Plus', '*') -> 4
LPAD 오른쪽 정렬후 왼쪽에 지정문자 삽입 LPAD('sql', 5, '*') -> **sql
RPAD 왼쪽 정렬후 오른쪽에 지정문자 삽입 RPAD('sql', 5, '*') -> sql**
LTRIM 왼쪽의 지정문자 삭제 LTRIM('*sql', '*') -> sql
RTRIM 오른쪽의 지정문자 삭제 RTRIM('sql*', '*') -> sql

 

SUBSTR 함수

문자열의 일부를 추출

SUBSTR ( expr | column, m, n )

문자열에서 m번째 문자부터 n개의 문자 추출

m이 음수이면 시작 위치는 문자열의 마지막

n을 생략하면 m부터 끝 문자까지 추출

 

- 1학년 학생의 주민번호에서 생년월일과 태어난 달을 추출

SELECT name, idnum, SUBSTR(idnum, 1, 6) "생년월일", SUBSTR(idnum 3, 2) "태어난달"
    FROM student
    WHERE grade='1';

 

INSTR 함수

특정 문자의 첫 위치를 반환

INSTR ( expr | column, char )

* 시작 위치, 몇번째 등장 옵션을 지정할 수 있지만 생략함

 

- 부서 이름에서 '과' 글자의 위치를 출력

SELECT dname, INSTR(dname, '과')
    FROM department;

-> 찾는 글자가 없는 경우, 0을 반환

 

- 학생의 전화번호에서 지역번호를 출력

SELECT tel, SUBSTR(tel, 1, INSTR(tel, ')')-1)
    FROM student;

-> 연락처에서 INSTR로 ')'의 위치를 찾아 SUBSTR을 통해 1부터 ')'의 위치 앞까지를 추출

 

LPAD, RPAD 함수

문자열이 일정한 크기가 되도록 왼쪽 또는 오른쪽에 지정 문자 삽입 ( 길이가 아닌 크기임을 유의. )

LPAD( expr | column, m, char )
RPAD( expr | column, m, char )

m 크기가 되도록 왼쪽 또는 오른쪽에 char 문자 삽입

char이 없으면 공백 삽입

 

- 교수 테이블에서 직급의 왼쪽에 '*' 문자를 삽입하여 10바이트로 출력하고

  교수 아이디 칼럼은 오른쪽에 '+' 문자를 삽입하여 12바이트로 출력

SELECT LPAD(position, 10, '*'), RPAD(userid, 12, '+')
    FROM professor;

 

LTRIM, RTRIM 함수

특정 문자를 제거

삭제할 문자를 지정하지 않으면 문자열의 앞뒤 부분에 있는 공백 문자 제거

LTRIM( expr | column, char )
RTRIM( expr | column, char )

 

- 부서 이름의 마지막 글자인 '과'를 삭제하여 출력

SELECT dname, RTRIM(dname, '과')
    FROM department;

 

 

 

Comments