문자 함수
대소문자 변환 함수
UPPER(char) | 대문자로 변환한다. |
---|---|
LOWER(char) | 소문자로 변환한다. |
INITCAP(char) | 첫 글자만 대문자로 변환한다. |
SELECT 'Oracle'
, UPPER('Oracle') --ORACLE
, LOWER('Oracle') --oracle
, INITCAP('Oracle') --Oracle
FROM dual;
SELECT last_name
FROM employees
WHERE LOWER(last_name) = 'lee';
LENGTH
문자 길이를 반환한다.
LENGTH(char)
- LENGTHB(char)
메모리를 차지하는 Byte(UTF-8)를 기준으로 한다.
한글 1문자당 3Byte.
SELECT LENGTH('Oracle') --6
, LENGTHB('Oracle') --6
, LENGTH('오라클') --3 한글 1문자당 1Byte
, LENGTHB('오라클') --9 한글 1문자당 3Byte (UTF-8)
FROM dual;
CONCAT
문자열을 결합한다.
간단히 '||'로 결합할 수 있다.
CONCAT(char|컬럼, 컬럼)
SELECT CONCAT('20', hire_date)
, '20' || hire_date
FROM employees;
SUBSTR
문자열의 일부를 추출한다.
SUBSTR(대상, 시작 위치, 추출할 개수)
- 시작 위치
- 양수 : 앞쪽 1부터 시작한다.
- 음수 : 뒤쪽부터 시작한다.
SELECT SUBSTR('ORACLE', 1, 2) -- OR
, SUBSTR('ORACLE', -2, 2) -- LE
FROM dual;
INSTR / INSTRB
특정 문자의 위치를 반환한다.
시작 위치와 검색 결과의 순번의 기본값은 1이다.
INSTR(대상, 검색 문자, 시작 위치, 검색 결과의 순번)
- INSTRB : Byte수를 기준으로 한다.
SELECT INSTR('ORACLE SQL', 'L', 1, 2) -- 10
, INSTR('오라클', '라') -- 2
, INSTRB('ORACLE', 'A') -- 3
, INSTRB('오라클', '클') -- 7
FROM dual;
LPAD / RPAD (Left/Right Padding)
L : 컬럼이나 대상 문자열을 오른쪽에 나타내고, 남은 왼쪽을 특정 기호로 채운다.
R : 컬럼이나 대상 문자열을 왼쪽에 나타내고, 남은 오른쪽을 특정 기호로 채운다.
Left와 Right는 채울 문자의 위치를 의미한다.
LPAD(대상, 크기, 채울 문자)
SELECT LPAD('ORACLE', 10, '*') --****ORACLE
, RPAD('oracle', 15, '^') --oracle^^^^^^^^^
FROM dual;
TRIM
특정 문자 또는 공백을 잘라내고 남은 문자열을 반환한다.
공백과 NULL은 문제를 일으킬 수 있으므로 이를 방지하기 위해 사용한다.
- TRIM(char)
앞뒤의 공백 문자를 모두 제거한다.
- TRIM(제거문자 FROM 대상문자)
특정 문자를 제거한다. 제거하려는 문자가 맨앞이나 맨뒤에 위치해야만 지울 수 있다.
- LTRIM
문자열의 왼쪽(앞)의 공백 문자들을 제거한다.
- RTRIM
문자열의 오른쪽(뒤)의 공백 문자들을 제거한다.
SELECT TRIM(' ORACLE ') --'ORACLE'
, LTRIM(' ORACLE ') --'ORACLE '
, RTRIM(' ORACLE ') --' ORACLE'
, TRIM('O' FROM 'ORACLE') --'RACLE'
, TRIM('E' FROM 'ORACLE') --'ORACL'
, TRIM('R' FROM 'ORACLE') -- error
, TRIM('O' FROM ' ORACLE ') -- error
FROM dual;