단일행 함수
- 한 번에 한 로우씩 처리하여 한 로우에 결과를 변경하는 함수이다.
- 단일행 함수는 SELECT, WHERE, ORDER BY, UPDATE의 SET 절에서 사용 가능하다.
- 단일행 함수는 1:M 조인이어도 M쪽에서 출력된 행이 하나씩 단일행 함수의 입력값으로 사용되므로 사용가 가능하다.
- 단일행 함수는 입력되는 값에 따라 문자 함수, 숫자 함수, 날짜 함수, 변환 함수, 일반 함수로 구분된다.
문자 함수
UPPER(컬럼)
- 모든 문자를 대문자로 변경(UPPER)
LOWER(컬럼)
- 모든 문자를 소문자로 변경(LOWER)
INITCAP(컬럼)
- 첫(INIT) 글자는 대문자(CAP), 나머지는 소문자로 변경
LPAD(컬럼, 자릿수, '빈자리를 채울 문자')
- 두 번째 인자인 자리 수만큼 문자열의 부족한 자리를 왼쪽(L)에서부터 세 번째 인자로 채운다(PAD).
RPAD(컬럼, 자릿수, '빈자리를 채울 문자')
- 두 번째 인자인 자리 수만큼 문자열의 부족한 자리를 오른쪽(R)에서부터 세 번째 인자로 채운다(PAD).
LTRIM(컬럼, '제거할 문자열')
- 문자열의 왼쪽(L)에 두 번째 인자인 제거할 문자열이 존재하면 제거(TRIM)한다. '제거할 문자'는 옵션으로 디폴트 값은 공백이다.
- '제거할 문자'를 동일한 값으로 여러 개 입력하여도 한 문자로 판단한다.
- 예를 들어 LTRIM(컬럼, '0') 이나 LTRIM(컬럼 '0000000')이나 동일하다.
RTRIM(컬럼, '제거할 문자열')
- 문자열의 오른쪽(R)에 두 번째 인자인 제거할 문자열이 존재하면 제거(TRIM)한다. 나머지 특징은 LTRIM과 동일하다.
TRIM( [BOTH | LEADING | TRAILING] '제거할 문자' FROM '문자열')
- 문자열의 양쪽(BOTH), 앞쪽(LEADING) 또는 뒤쪽(TRAILING)에 제거할 문자가 존재하면 제거(TRIM)한다.
- 문자열만 입력한다면 양쪽의 공백을 제거한다.
- BOTH, LEADING, TRAILING 셋 중 아무것도 입력하지 않는다면, 디폴트 값은 BOTH이다.
- '제거할 문자'는 '문자열'이 아니고 '문자'이다. 즉 char 하나만 입력받는다. 문자열을 입력하게 되면 에러가 발생한다.
SUBSTR(컬럼, 시작 위치, 길이)
- 문자열에서 두 번째 인자인 시작 위치에서 세 번째 인자인 길이만큼 문자열을 잘라낼 때(SUBSTR) 사용하는 함수이다.
- 시작 위치의 인덱스는 1부터 시작한다.
- 시작 위치는 음수도 될 수 있다. 시작 위치가 -1이라면 맨 끝 문자가 시작 위치이다. 그리고 스캔하는 방향을 항상 오른쪽으로 한다. 아래 설명할 INSTR 함수랑 다르다.
INSTR(컬럼, 찾는 글자, 시작 위치, 횟수)
- 문자열에서 특정 문자의 위치를 찾을 때(INSTR) 사용하는 함수이다. 찾을 때의 시작 위치를 입력받으며, 몇 번째로 해당 글자를 만났을 때 위치를 반환할지도 입력받는다.
- 시작 위치와 횟수는 입력을 받지 않을 경우, 각각 디폴트 값은 1, 1이다.
- 찾는 문자가 없으면 0을 반환한다.
- 시작 위치는 음수도 될 수 있다. 시작 위치가 -1이라면 맨 끝 문자가 시작 위치이다. 그리고 스캔하는 방향은 항상 왼쪽이다. 위에 설명한 SUBSTR 함수랑 다르다.
REPLACE(컬럼, '찾을 문자' '변환 문자')
- 문자열에서 특정 문자를 찾아 변환한다(REPLACE).
숫자 함수
ABS(숫자)
- 절댓값을 구한다.
MOD(숫자, 나눌숫자)
- 나머지를 구한다. 숫자 % 나눌숫자
SIGN(숫자)
- 양수이면 1, 음수이면 -1, 0이면 0을 반환하는 함수이다.
ROUND(숫자, 자릿수)
- 반올림한다.
- 자릿수는 음수도 입력할 수 있다. 음수를 입력하면 소수점이 아닌 정수형 자릿수를 나타낸다.
TRUNC(숫자, 자릿수)
- 내림한다.
- 자릿수는 음수도 입력할 수 있다. 음수를 입력하면 소수점이 아닌 정수형 자릿수를 나타낸다.
CEIL(숫자)
- 주어진 숫자와 가장 가까우면서 큰 정수를 구한다.
- 소수점을 다 지우고 +1 하면 된다.
FLOOR(숫자)
- 주어진 숫자와 가장 가까우면서 작은 정수를 구한다.
- 소수점을 다 지우면 된다.
POWER(숫자, 승)
- 숫자^승 값을 반환한다.
EXP(숫자)
- e^숫자 값을 반환한다.
LOG(밑, 진수)
- 로그를 구한다.
LN(진수)
- 밑이 e인 로그를 구한다.
SIN(라디안), COS(라디안), TAN라디안)
- 삼각함수를 구한다.
CHR(숫자)
- 숫자와 대응되는 아스키코드의 문자를 반환한다.
날짜 함수
SYSDATE
- 현재의 날짜와 시간을 출력하는 함수이다.
EXTRACT( [YEAR | MONTH | DAY | HOUR | MINUTE | SECOND] FROM 날짜 )
- 입력된 날짜에서 추출하고자 하는 정보를 반환하는 함수
- 변환 함수에서 설명할 TO_CHAR와 비슷하다.
ADD_MONTHS(날짜, 더할 숫자)
- 입력된 날짜에 숫자만큼의 달을 더하는 함수이다.
MONTHS_BETWEEN(날짜1, 날짜2)
- 두 날짜 사이의 개월 수를 출력하는 함수이다.
- 날짜 1이 더 커야지 결과 값은 양수로 표현된다.
변환 함수
TO_CHAR(숫자 또는 날짜, 형식)
- 숫자 또는 날짜의 값을 원하는 형식의 문자열로 변환하는 함수이다.
- 9는 자리를 차지한다는 의미이다.
TO_CHAR(1234,'99999') -- ' 1234' TO_CHAR(1234,'9999.99') -- '1234.00'
- 0은 해당 자리가 비어있다면 0으로 표현하라는 의미이다.
-
TO_CHAR(1234,'09999') -- '01234'
- 날짜 함수인 EXTRACT(YEAR FROM SYSDATE)는 아래와 동일하다.
TO_CHAR(SYSDATE, YYYY)
TO_NUMBER(문자)
- 문자를 숫자로 변환하는 함수이다.
- 숫자로 변환할 수 없을 경우 에러가 발생한다.
TO_DATE(문자, 날짜 형식)
- 문자를 날짜로 변환하는 함수이다.
- 날짜 형식을 입력하지 않으면 입력받은 날짜 문자 형식대로 변환된다.
CAST(변환 대상 AS 데이터 타입)
- 변환 대상을 특정한 데이터 타입으로 변환하는 함수이다.
일반 함수
NVL(컬럼, 변환 값)
- 첫 번째 인자의 값이 NULL일 경우, 두 번째 값으로 표현한다.
NULLIF(표현식1, 표현식2)
- 첫 번째 인자와 두 번째 인자의 값이 같다면 NULL을 반환한다. 만약 다르다면 첫 번째 인자를 반환한다.
COALESCE(표현식1, 표현식2, ... , 표현식N)
- 입력받은 인자를 앞에서부터 확인하면서 NULL이 아니라면 해당 인자를 반환한다. 만약 모두 NULL이라면 NULL을 반환한다.
DECODE(표현식, 비교대상1, 반환값1, 비교대상2, 반환값2, ... , 비교대상N, 반환값N, 디폴트 값)
- 첫 번째 인자를 앞에서부터 비교대상과 비교하고 같다면 해당 반환 값을 반환한다. 만약 모든 비교대상과 다르다면 맨 마지막 인자인 디폴트 값을 반환한다.
- 디폴트 값은 입력하지 않으면 NULL이다.
CASE 표현식
WHEN 비교대상(조건문)1 THEN 반환값1
WHEN 비교대상(조건문)2 THEN 반환값2
....
WHEN 비교대상(조건문)N THEN 반환값N
ELSE 디폴트값
END
- 표현식을 앞에서부터 비교대상과 비교하고 같다면 해당 반환 값을 반환한다. 만약 모든 비교대상과 다르다면 맨 마지막 인자인 디폴트 값을 반환한다.
- 비교 값만 입력할 경우 DECODE와 동일하게 동작한다.
- BETWEEN 10 AND 20과 같이 조건문을 입력할 수도 있다.
'SQL > 기본' 카테고리의 다른 글
[SQL][SQLD][SQLP] 가끔 헷갈리는 문제 (2) | 2021.07.21 |
---|---|
[SQL][SQLD][SQLP] 절차형 SQL (PL/SQL) (0) | 2021.07.17 |
[SQL][SQLD][SQLP] 윈도우 함수 (5) | 2021.07.15 |
[SQL][SQLD][SQLP] 다중행 함수, 그룹 함수, 집계함수 (0) | 2021.07.12 |
[SQL] DDL, DML, DCL, TCL 예제 (Oracle 기준) (0) | 2021.07.06 |