Infra & Security Eng/Database Engineering
단일 행 함수 문자 함수 개념, 특징, 예제 문제
엔지니어 E
2026. 2. 3. 12:33
반응형

단일행 함수 문자 함수의 개념
| 데이터를 검색할 때, 각각의 줄(행)마다 하나씩 적용되어 결과를 보여주는 함수이다. 100줄의 데이터를 검색하면서 이 함수를 쓰면, 결과물도 각 줄에 맞춰 100개가 나오게 된다 주요 특징 1. 행별 연산: 모든 행에 대해 개별적으로 계산 결과값을 알려줌 2. 중첩 가능: 함수 안에 또 다른 함수를 넣어서 여러 번 계산 가능 3. 효율성: 프로그램의 오류를 줄여주고 개발하는 시간을 아껴준다 4. 다양한 재료: 함수의 재료(인수)로 컬럼 이름, 계산식, 변수, 정해진 숫자(상수) 등을 모두 넣을 수 있음 |
문자 함수
| 함수명 | 기능 | 함수명 | 기능 |
| Lower | 문자열을 소문자로 변환 LOWER(문자열) |
INSTR | 문자의 위치 반환 INSTR(문자열, 검색문자, 시작위치, 횟수 INSTR('ORACLE','A') ---> 3 (오라클이라는 숫자에서 A가 몇번째로 있는지 알려줘) |
| UPPER | 문자열을 대문자로 변환 UPPER(문자열) |
TRIM | 접두(접미) 글자를 잘라낸다 TRIM([leading | trailing | both] 제외 문자 FROM 문자열) TRIM('O' FROM 'oracle') ---> racle |
| INICAP | 첫 번째 문자는 대문자로, 나멈지는 소문자로 변환 INITCAP(문자열) |
LENGTH LENGTHB |
문자열의 길이나 BYTE를 반환 LENGTH(문자열) LENGTHB(문자열) LENGTH('디비') ---> 2 (문자열) LENGTHB('디비') ---> 4 (바이트) |
| SUBSTR | 문자열 내 지정된 위치의 문자열을 검색 SUBSTR(문자열, STR, CNT) SUBSTR('oracle',1,2) ---> or (oracle'이라는 단어의 (1)번 위치부터 시작해서, 딱 (2)글자만 잘라내줘) |
LAPD, RPAD |
지정된 문자열의 길만큼 빈 부분에 문자를 채운다 LPAD(문자열, 출력폭, 채움문자) LPAD('20000', 10, '*') ---> *****20000 (왼쪽(Left)에 여백(Padding)을 채워 넣어라) |
문자 함수를 이용한 검색 실습하기
| 1. 부서명과 문자열의 길이를 출력 한다 다양한 방법으로 'a'가 나오는 위치를 출력 한다 ![]() SQL> SELECT dname, LENGTH(dname), LENGTHB(dname) 2 FROM dept; SELECT dname, -- [1] 부서 이름을 화면에 보여줌 LENGTH(dname), -- [2] 부서 이름이 '몇 글자'인지 숫자로 알려줌 (한글/영어 모두 1글자로 취급) LENGTHB(dname) -- [3] 부서 이름이 메모리에서 '몇 바이트'를 차지하는지 알려줌 FROM dept; -- [4] 부서(dept) 테이블에서 데이터를 가져옴 2. substr 함수를 이용해서 사원 이름의 일부 내용만을 검색 한다 (예시. KING) SELECT ename, SUBSTR(ename, 2), -- [1] 2번째 글자부터 끝까지 (예: 'ING') SUBSTR(ename, -2), -- [2] 뒤에서 2번째 글자부터 끝까지 (예: 'NG') SUBSTR(ename, 1, 2), -- [3] 1번째 글자부터 딱 2글자만 (예: 'KI') SUBSTR(ename, -2, 2) -- [4] 뒤에서 2번째 글자부터 딱 2글자만 (예: 'NG') FROM emp 3. 다양한 방법으로 'a'가 나오는 위치를 출력 한다 SELECT INSTR('database', 'a'), -- [1] 첫 번째 'a'의 위치는? INSTR('database', 'a', 3), -- [2] 3번째 칸부터 찾았을 때 나오는 'a'의 위치는? INSTR('database', 'a', 1, 3) -- [3] 1번째 칸부터 찾기 시작해서 '3번째'로 발견되는 'a'의 위치는? FROM dual; 4. 부서명의 마지막 글자를 제외하고 검색 SELECT dname, -- [1] 원래 부서 이름을 먼저 보여준다 SUBSTR(dname, 1, LENGTH(dname)-1) -- [2] 1번째 글자부터 (전체길이-1)만큼만 잘라낸다 AS dname -- [3] 결과창 제목을 보기 좋게 'dname'으로 바꾼다 FROM dept; -- [4] 부서(dept) 테이블에서 데이터를 가져온다 |
문자 함수: 문자 치환 함수
| 단일행 | 기능 |
| TRASLATE | 문자 단위로 치환된 값을 반환 한다 TRASLATE(문자열, 검색문자, 치환문자) TRASLATE('oracle', 'a', '#') ---> or#cle |
| REPLACE | 문자열 단위로 치환된 값을 반환 한다 REPLACE(문자열, 검색문자열, 치환문자열) REPLACE('oracle', 'or', '##') ---> ##acle |
문자 치환 함수 실습하기
| SQL> SELECT TRANSLATE('World of Warcraft', 'Wo', '--') Translate, 2 REPLACE('World of Warcraft', 'Wo', '--') Replace 3 FROM dual; 실행 결과 TRANSLATE 결과: --rld -f --arcraft REPLACE 결과: --rld of Warcraft * translate: 각 문자를 바꿈(각 W랑 O를 -로 바꿔준다) * replace: 문자열을 바꿈(wo를 --로 바꾼다) * traslate 보단 replace를 더 많이 사용 |
