-
6.2. 문자함수
- 문자값를 가공하거나 문자값으로부터 특정 결과를 얻고자 할 때 사용
6.2.1 UPPER, LOWER, INITCAP
- UPPER : 주어진 문자를 모두 대문자로 변환
- LOWER : 주어진 문자를 모두 소문자로 변환
- INITCAP : 주어진 문자 중 첫 글자는 대문자로, 나머지는 소문자로 변환
SELECT ename, UPPER(ename), LOWER(ename), INITCAP(ename) FROM emp;
- 'KimHUgo'와 'kimhugo', 'KimHuGo'는 모두 다른 문자로 인식한다.
- 이 때 모든 문자를 대문자, 혹은 소문자로 변환하여 원하는 조건의 문자를 찾는데 활용할 수 있다.
6.2.2 LENGTH, LENGTHB
- LENGTH : 문자열의 길이를 반환
- LENGTHB : 문자열의 바이트 수를 반환
SELECT LENGTH('ENGLISH'), LENGTH('한글'), LENGTHB('ENGLISH'), LENGTHB('한글') FROM dual;
- LENGTH는 영어든, 한글이든 정확한 글자수를 반환한다.
- LENGTHB를 통해 오라클db에서 영어 한 글자를 1바이트, 한글 한 글자를 3바이트로 취급하는 걸 알 수 있다.
6.2.3 SUBSTR
- 문자열의 일부를 추출. 첫 번째 문자의 위치는 0이 아니라 1이다.
- SUBSTR(문자열, 시작 위치, 추출 길이) : 주어진 '문자열'의 '시작 위치'부터 '추출 길이'만큼 추출. 시작 위치가 음수인 경우 마지막 위치부터 거슬러 올라간 위치에서부터 시작.
- SUBSTR(문자열, 시작 위치) : '문자열'의 '시작 위치'부터 끝까지 추출. 시작 위치가 음수인 경우 마지막 위치부터 거슬러 올라간 위치부터 끝까지 추출.
SELECT ename, SUBSTR(ename, 1, 2), SUBSTR(ename, 3, 2), SUBSTR(ename, 3) FROM emp;
6.2.4. INSTR
- 문자열 안에서 특정 문자나 문자열의 위치를 반환
INSTR({대상 문자열}, {위치를 찾으려는 대상문자 또는 문자열}, [위치 찾기를 시작할 위치], [시작 위치에서부터 몇 번째로 등장하는 대상 문자인지]
{} : 필수, [] : 선택
SELECT INSTR('HELLO, ORACLE!', 'L') AS INSTR_1, INSTR('HELLO, ORACLE!', 'L', 5) AS INSTR_2, INSTR('HELLO, ORACLE!', 'L', 2, 2) AS INSTR_3 FROM dual;
INSTR_1 : HELLO, ORACLE!
INSTR_2 : HELLO, ORACLE!
INSTR_3 : HELLO, ORACLE!
- 이름에 'S'가 들어가는 사원의 정보 표기하기
SELECT * FROM emp WHERE INSTR(ename, 'S') > 0;
6.2.5 REPLACE
- 특정 문자열 속 문자를 다른 문자로 대체
- 대체할 문자를 입력하지 않으면, 대상 문자는 삭제
SELECT '010-1234-5678' AS REPLACE_BEFORE, REPLACE('010-1234-5678', '-', '*') AS REPLACE_1, REPLACE('010-1234-5678', '-') AS REPLACE_2 FROM dual;
6.2.6 LPAD, RPAD
- 데이터와 자릿수를 지정한 후 데이터의 길이가 짧아 자릿수가 남을 경우, 남은 자리를 특정 문자로 채움
- LPAD는 빈 자리를 왼쪽에 채우고, RPAD는 오른쪽에 채운다.
- 채울 문자를 지정하지 않는 경우, 공백으로 채운다.
- 데이터의 일부만 노출해야 하는 정보(개인 정보 등)을 출력할 때 자주 사용
LPAD({문자열 또는 열이름}, {데이터 자릿수}, [남은 자리에 채울 문자]) RPAD({문자열 또는 열이름}, {데이터 자릿수}, [남은 자리에 채울 문자])
SELECT 'ORACLE', LPAD('ORACLE', 10, '#') AS LPAD_1, RPAD('ORACLE', 10, '*') AS RPAD_1, LPAD('ORACLE', 10) AS LPAD_2, RPAD('ORACLE', 10) AS RPAD_2 FROM dual;
6.2.7. CONCAT
- 두 문자열을 하나로 연결
- 열이나 문자열 모두 지정 가능
SELECT CONCAT(empno, ename), CONCAT(empno, CONCAT(' : ', ename)) FROM emp WHERE ename = 'SCOTT';
6.2.8 TRIM, LTRIM, RTRIM
- 문자열 내에서 특정 문자를 지움
'Oracle' 카테고리의 다른 글
7. 다중행 함수와 데이터 그룹화 (0) 2023.08.18 6.3 숫자 함수 (0) 2023.08.01 6.1 오라클 데이터베이스 함수의 종류 (0) 2023.07.31 5. 집합연산자: UNION, UNION ALL, MINUS, INTERSECT (0) 2023.07.31 5.SQL연산자 : IN, BETWEEN A AND B, LIKE, IS NULL, NOT (0) 2023.07.31