* ORACLE 기준 함수 정의*
01. 함수 정의
- INPUT VALUE → (FUNCTION) → OUTPUT VALUE
- FUNCTION: INPUT VALUE와 OUTPUT VALUE의 관계를 정의한 객체
- FROM절을 제외한 모든 절에서 사용 가능
02. 함수 기능
- 기본적인 쿼리문을 더 강력하게 만듬
- 데이터의 계산을 수행
- 개별 데이터의 항목을 수정
- 표시할 날짜 및 숫자 형식을 지정
- 열 데이터의 유형(DATA TYPE)을 변환
03. 함수의 종류 - 입력값의 수에 따라 분류
- 단일행 함수: INPUT과 OUTPUT의 관계 = 1:1
- 복수행 함수: 여러 건의 데이터를 동시에 입력받아서 하나의 요약값을 리턴
- 같은 용어: 그룹 함수, 집계 함수
04. 함수의 종류 - 입/출력값의 타입에 따라 분류
- 문자형 함수
- 문자열 결함, 추출, 삭제 등을 수행
- 단일행 함수 형태
- OUTPUT: (대부분) 문자값(LENGTH, INSTR 제외)
함수명 | 함수 기능 | 기타 설명 |
LOWER(대상) | 소문자로 변환 | |
UPPER(대상) | 대문자로 변환 | |
SUBSTR(대상, m, n) | m의 위치에서부터 n개 자름 | |
INSTR(대상, 찾을문자열, m, n) | m의 위치에서 n번째 위치를 찾음 | * n 생략: 끝까지 추출 * 음수(-): 뒤에서부터 |
LTRIM(대상, 삭제문자열) | 왼쪽을 기준으로 '삭제문자열' 삭제 | * m, n 생략: 1로 해석 * LTRIM (대상, 삭제문자열, 찾는위치, 몇 번째) : 함수에 추가적으로 '찾는위치'부터 '몇 번째'의 '대상'을 삭제할지 지정할 수 있음 |
RTRIM(대상, 삭제문자열) | 오른쪽을 기준으로 '삭제문자열' 삭제 | * 삭제문자열 생략: 공백 삭제 |
TRIM(대상) | 양쪽을 기준으로 '삭제문자열' 삭제 | |
LPAD(대상, n, 문자열) | '대상' 왼쪽에 문자열을 추가해서 총 n의 길이 리턴 | |
RPAD(대상, n, 문자열) | '대상' 오른쪽에 문자열을 추가해서 총 n의 길이 리턴 | |
CONCAT(대상1, 대상2) | 문자열 결합 | * 두 개의 인수만 전달 가능 |
LENGTH(대상) | 문자열 길이 반환 | |
REPLACE (대상, 찾을문자열, 바꿀문자열) |
문자열 치환 및 삭제 | * '바꿀 문자열' 생략 || 빈 문자열 전달 : 찾는 문자열 삭제 가능 |
TRANSLATE (대상, 찾을문자열, 바꿀문자열) |
글자를 1:1로 치환 | * 매칭되는 글자끼리 치환 * 문자열인 경우 한 세트 * 빈 문자열 전달: NULL 리턴 |
- 숫자형 함수
- 숫자 입력 → 숫자 값 반환
- 단일행 함수 형태의 숫자함수 (1:1)
- ORACLE과 SQL Server 함수 거의 동일
함수명 | 함수 기능 | 기타 설명 |
ABS(숫자) | 절대값 반환 | |
ROUND(숫자, 자리수) | 소수점 특정 자리수에서 반올림 | * '자리수'까지 자르는 것이므로 자리수+1에서 반올림 * 자리수가 음수인 경우 : 정수 자리에서 반올림 |
TRUNC(숫자, 자리수) | 소수점 특정 자리수에서 버림 | |
SIGN(숫자) | 숫자 양수: 1 / 음수: -1 / 0: 0 반환 | |
FLOOR(숫자) | 작거나 같은 최대 정수 반환 | |
CEIL(숫자) | 크거나 같은 최소 정수 반환 | |
MOD(숫자1, 숫자2) | 숫자1 % 숫자2 (나머지) 반환 | |
POWER(m, n) | m^n | |
SORT(숫자) | 루트값 리턴 |
- 날짜형 함수
- 날짜 연산과 관련된 함수
- ORACLE과 SQL Server 함수 거의 다름
함수명 | 함수 기능 | 기타 설명 |
SYSDATE | 현재 날짜 + 시간 리턴 | * 날짜 출력 형식에 따라 다르게 출력 (날짜만 출력될 수 있음) |
CURRENT_DATE | 현재 날짜 리턴 | * 날짜 출력 형식에 따라 다르게 출력 (시간이 출력될 수 있음) |
CURRENT_TIMESTAMP | 현재 타임스탬프 리턴 | |
ADD_MONTHS(날짜, n) | 날짜에서 n개월 후 날짜 리턴 | * n이 음수: n개월 이전 날짜 리턴 |
MONTHS_BETWEEN (날짜1, 날짜2) |
날짜1과 날짜 2의 개월 수 리턴 | * 날짜1 < 날짜2: 음수 리턴 |
LAST_DAY(날짜) | 주어진 월의 마지막 날짜 리턴 | |
NEXT_DAY(날짜, n) | 주어진 날짜 이후 지정된 요일의 첫 번째 날짜 리턴 | * 1~7: 일~토요일 |
ROUND(날짜, 자리수) | 날짜 반올림 | * 월 이전 자리에서 반올림 |
TRUNC(날짜, 자리수) | 날짜 버림 | * 월 이전 자리에서 버림 |
- 변환 함수
- 값의 데이터 타입을 변환
- 문자 → 숫자, 숫자 → 문자, 날짜 → 문자, 문자 → 날짜
함수명 | 함수 기능 | 기타 설명 |
TO_NUMBER(문자) | 숫자 타입으로 변경 | |
TO_CHAR(대상, 포맷) | 1) 날짜의 포맷 변경 | |
2) 숫자의 포맷 변경 | ||
TO_DATE(대상, 포맷) | 주어진 문자를 포맷 형식에 맞게 읽어 날짜로 리턴 | |
FORMAT(날짜, 포맷) | 날짜의 포맷 변경 | |
CAST(대상 AS 데이터타입) | 대상을 주어진 데이터타입으로 변환 |
- 그룹 함수
- 다중행 함수
- 여러 값이 INPUT값으로 들어가서 하나의 요약된 값으로 리턴
- GROUP BY와 함께 자주 사용
- ORACLE과 SQL Server 거의 동일
함수명 | 함수 기능 | 기타 설명 |
COUNT(대상) | 행의 수 리턴 | * NULL 행은 무시하고 연산 |
SUM(대상) | 총 합 리턴 | |
AVG(대상) | 평균 리턴 | |
MIN(대상) | 최솟값 리턴 | |
MAX(대상) | 최댓값 리턴 | |
VARIANCE(대상) | 분산 리턴 | |
STDDEV(대상) | 표준편차 리턴 |
- 일반 함수
- 기타 함수: 널 치환 함수 등
함수명 | 함수 기능 | 기타 설명 |
DECODE(대상, 값1, 리턴1, 값2, 리턴2, ..., 그외리턴) |
Switch(대상) { case(값1): return 리턴1; case(값1): return 리턴1; ... default: return 그외리턴; } |
* 대소비교에 따른 치환 불가 * 그 외 리턴 생략: NULL 리턴 |
NVL(대상, 치환값) | if(대상 == NULL) return 치환값; |
|
NVL2(대상, 치환값1, 치환값2) | retrun 대상 == NULL ? 치환값2 : 치환값1; | |
COALESCE (대상1, 대상2, ..., 그외리턴) |
for(대상타입 대상 : 대상들){ if(대상 != NULL) save(대상); } if(save == NULL) return 그외리턴; else save.allPrint(); |
* 그외리턴값 생략: NULL 리턴 |
ISNULL(대상, 치환값) | if(대상 == NULL) return 치환값; |
|
NULLIF(대상1, 대상2) | if(대상1.equals(대상2)) return NULL; else return 대상1; |
|
CASE문 | 조건별 치환 및 연산 수행 |
'SQL' 카테고리의 다른 글
[SQL] GROUP BY 절, HAVING 절 (0) | 2025.02.14 |
---|---|
[SQL] WHERE 절 (0) | 2025.02.13 |
[SQL] DQL (Data Query Language) (0) | 2025.02.13 |
[SQL] SQL 명령어 (1) | 2025.02.13 |
[SQL] Oracle 기본 계정과 사용자 계정, 권한 부여 (0) | 2025.02.13 |