[DBP] CH2-1. Oracle 문자 처리 함수
🍈 문자 처리 함수
CHR
- 숫자 -> 해당 ASCII 값에 해당하는 문자 반환
select CHR(숫자) from dual;
select CHR(65) from dual;
--> A
ASCII
- 문자 -> ASCII 코드 값 반환
select ASCII('문자') from dual;
select ASCII('7') from dual;
--> 55
select ASCII('A') from dual;
--> 65
LOWER / UPPER
- 소문자 / 대문자로 변환
select LOWER('문자') from dual;
select UPPER('문자') from dual;
select LOWER('ORACLE') from dual;
--> oracle
selece UPPER('oracle') from dual;
--> ORACLE
INITCAP
- 첫 글자만 대문자로 변환
select INITCAP('문자') from dual;
select INITCAP('oracle') from dual;
--> Oracle
LPAD
- 문자열 오른쪽 정렬 후 왼쪽 공백에 문자 삽입
select LPAD('문자열', 문자열 총 길이, '공백 채울 문자') from dual;
select LPAD('HI', 10, '*') from dual;
--> ********HI
RPAD
- 문자열 왼쪽 정렬 후 오른쪽 공백에 문자 삽입
select RPAD('문자열', 문자열 총 길이, '공백 채울 문자') from dual;
select RPAD('WOW', 5, '-') from dual;
--> WOW--
select RPAD(SUBSTR('011124-1234567', 1, 7), 14, '*') from dual;
--> 011124-*******
LTRIM
- 왼쪽 특정 문자(공백) 삭제
- 인수로
문자열
만 넣으면 공백 삭제
select LTRIM('문자열', '삭제할 문자') from dual;
select LTRIM('Oracle', 'O') from dual;
--> racle
select LTRIM(' HAPPY') from dual;
--> HAPPY
RTRIM
- 오른쪽 특정 문자(공백) 삭제
- 인수로
문자열
만 넣으면 공백 삭제
select RTRIM('문자열', '삭제할 문자') from dual;
select RTRIM('Oracle', 'e') from dual;
--> Oracl
select RTRIM('HAPPY ') from dual;
--> HAPPY
REPLACE
- 문자열 치환
치환하여 넣을 문자
인수로 넣지 않으면 특정 문자 제거
select REPLACE('문자열', '없앨 문자열', '치환하여 넣을 문자열') from dual;
select replace('oracle database', 'database', 'db') from dual;
--> oracle db
select replace('oracle database', 'database') from dual;
--> oracle
SUBSTR / SUBSTRB
- 문자열 일부분 반환
SUBSTRB
는 Byte 기준- 인덱스는 1부터 시작
-- 특정 지점부터 끝까지 반환
select SUBSTR('문자열', 시작할 인덱스) from dual;
-- 일정 부분만 잘라서 반환
select SUBSTR('문자열', 시작 인덱스, 길이) from dual;
-- 뒤에서부터 자르기
select SUBSTR('문자열', 시작 인덱스(음수) [, 길이]) from dual;
-- byte 단위로 자르기
-- 한글 3byte / 2byte
select SUBSTRB('문자열', 시작 인덱스, 길이) from dual;
select SUBSTR('Hello World!', 3) from dual;
--> llo World!
select SUBSTR('Hello World!', 3, 5) from dual;
--> llo W
select SUBSTR('Hello World!', -4) from dual;
--> rld!
select SUBSTRB('안녕하세요', 4, 6) from dual;
--> 녕하
LENGTH / LENGTHB
- 문자열 길이 반환
LENGTHB
는 Byte 길이
select LENGTH('문자열') from dual;
select LENGTHB('문자열') from dual;
select LENGTH('Hello') from dual;
--> 5
select LENGTH('오라클 DB') from dual;
--> 6
select LENGTHB('하이') from dual;
--> 6
INSTR / INSTRB
- 문자열 위치 반환
- 찾는 문자가 없으면
0
반환 - 찾는 단어 앞 글자의 인덱스 반환
- 끝에서 부터 찾으려면 음수 입력
select INSTR('문자열', '찾는 문자열' [, 시작지점, 몇번째 단어 반환할지]) from dual;
select INSTR('HAPPY BIRTHDAY', 'YOU') from dual;
--> 0
select INSTR('HAPPY BIRTHDAY', 'BI') from dual;
--> 6
select INSTR('HAPPY BIRTHDAY', 'Y', 6) from dual;
--> 15
-- (6번째부터 찾기 시작)
select INSTR('HAPPY BIRTHDAY', 'P', 2, 2) from dual;
--> 4
-- (2번째부터 시작해서 나오는 값 중에 2번째 값의 위치 반환)
select INSTR('HAPPY BIRTHDAY', 'A', -1, 1) from dual;
--> 14
-- (뒤에서 첫번째 글자부터 찾기 시작하여 첫번째로 나오는 값의 위치)