함수란 사용자가 입력 값 X를 넣으면 정해 놓은 출력 값 Y가 나오는 개념입니다.
자판기를 생각하면 됩니다. 동전을 넣고(X) 자판기(함수)를 거치면 물건(Y)이 나오는 것과 유사한 개념입니다.
데이터 값을 계산하거나 조작합니다(단일 행 함수).
행의 그룹에 대해 계산하거나 요약합니다(그룹 함수).
열의 데이터 타입을 변환합니다. 즉, 날짜와 숫자 등 데이터 타입을 상호 변환합니다.
함수에는 단일 행 함수와 그룹 함수가 있는데 차이점은 다음과 같습니다.
| 컬럼명 | 데이터 타입 | 설명 |
|---|---|---|
| post_id | NUMBER(10) | 게시글 ID (Primary Key, Unique Key) |
| title | VARCHAR2(200) | 게시글 제목 (최대 200자) |
| content | VARCHAR2(4000) | 게시글 내용 (최대 4000자) |
| author | VARCHAR2(50) | 작성자 (최대 50자) |
| created_at | DATE | 작성일시 |
| updated_at | DATE | 수정일시 |
| view_count | NUMBER(10) | 조회수 |
| category | VARCHAR2(50) | 카테고리 (선택 사항, 최대 50자) |
| tags | VARCHAR2(200) | 태그 (선택 사항, 쉼표 등으로 구분, 최대 200자) |
설명:
NUMBER 타입으로 지정하고, Primary Key 또는 Unique Key로 설정하여 중복을 방지합니다.VARCHAR2 타입을 사용하여 가변 길이 문자열을 저장합니다.VARCHAR2 타입을 사용하여 가변 길이 문자열을 저장합니다. 4000자 제한이 있지만, 더 긴 내용을 저장해야 한다면 CLOB 타입을 고려해볼 수 있습니다.VARCHAR2 타입을 사용하여 가변 길이 문자열을 저장합니다.DATE 타입을 사용하여 날짜와 시간을 저장합니다.DATE 타입을 사용하여 날짜와 시간을 저장합니다.NUMBER 타입을 사용하여 숫자 데이터를 저장합니다.VARCHAR2 타입을 사용하여 가변 길이 문자열을 저장합니다.VARCHAR2 타입을 사용하여 가변 길이 문자열을 저장합니다. 쉼표 등으로 구분하여 여러 개의 태그를 저장할 수 있습니다.| 종류 | 설명 |
|---|---|
| 문자 타입 함수 | 문자를 입력받아 문자와 숫자를 반환한다. |
| 숫자 타입 함수 | 숫자를 입력받아 숫자를 반환한다. |
| 날짜 타입 함수 | 날짜에 대해 연산한다. 숫자를 반환하는 MONTHS_BETWEEN 함수를 제외한 모든 날짜 타입 함수는 날짜 값을 반환한다. |
| 변환 타입 함수 | 임의의 데이터 타입의 값을 다른 데이터 타입으로 변환한다. |
| 일반 함수 | 그 외 NVL, DECODE, CASE WHEN, 순위 함수 등 |
각 행에 대해 수행합니다.
데이터 타입에 맞는 함수를 사용해야 합니다.
행별로 하나의 결과를 반환합니다.
SELECT, WHERE, ORDER BY 절 등에서 사용할 수 있습니다.
함수 속의 함수처럼 중첩해서 사용할 수 있습니다.
중첩해서 사용할 경우 가장 안쪽(하위) 단계에서 바깥쪽(상위) 단계순으로 진행합니다.
문자 타입 함수는 주로 데이터 조작에 쓰이며 종류는 다음과 같습니다. 문자나 문자열 데이터는 작은따옴표(‘ ’)로 묶어서 문자 타입으로 표현합니다.
| 함수 | 설명 | 예 | 결과 |
|---|---|---|---|
| LOWER | 값을 소문자로 변환한다. | LOWER('ABCD') | abcd |
| UPPER | 값을 대문자로 변환한다. | UPPER('abcd') | ABCD |
| INITCAP | 첫 번째 글자만 대문자로 변환한다. | INITCAP('abcd') | Abcd |
| SUBSTR | 문자열 중 일부분을 선택한다. | SUBSTR('ABC', 1, 2) | AB |
| REPLACE | 특정 문자열을 찾아 바꾼다. 예를 들어 A를 찾아 E로 바꾼다. | REPLACE('AB', 'A', 'E') | EB |
| CONCAT | 두 문자열을 연결한다 ( | 연산자와 같다). | |
| LENGTH | 문자열의 길이를 구한다. | LENGTH('AB') | 2 |
| INSTR | 명명된 문자의 위치를 구한다. | INSTR('ABCD', 'D') | 4 |
| LPAD | 왼쪽부터 특정 문자로 자리를 채운다. | LPAD('ABCD', 6, '*') | **ABCD |
| RPAD | 오른쪽부터 특정 문자로 자리를 채운다. | RPAD('ABCD', 6, '*') | ABCD** |
| LTRIM | 주어진 문자열의 왼쪽 문자를 지운다. | LTRIM('ABCD', 'AB') | CD |
| RTRIM | 주어진 문자열의 오른쪽 문자를 지운다. | RTRIM('ABCD', 'CD') | AB |