단일 행 함수들의 주요 특징
- select, where, order by 절에 사용 가능하다
- 각 행들에 대해 개별적으로 적용되어 데이터값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴한다
- 여러 인자를 입력해도 단 하나의 결과만 리턴한다
- 특별한 경우가 아니면 함수의 인자로 함수를 사용하는 함수의 중첩이 가능하다
종류
Oracle 기준이므로 MySQL, postgresql 등 다른 RDBMS 를 사용할 경우에는 해당 함수가 있는지 찾아보고 사용해야 한다.
내장함수로 비슷한 기능의 다른 함수가 존재할 수도 있다.
문자형 함수
문자를 입력하면 문자나 숫자 값을 반환한다.
LOWER | 소문자로 변환 | LOWER('SQL Developer') | sql developer |
UPPER | 대문자로 변환 | UPPER('SQL Developer') | SQL DEVELOPER |
ASCII | 아스키코드 값 출력 | ASCII('A') | 65 |
CHR | 아스키코드값의 문자 출력 | CHR('65') | A |
CONCAT | 문자열 결합 | CONCAT('SQL Developer') | SQLDeveloper |
SUBSTR | 문자열 잘라내기 | SUBSTR('SQL Developer', 2, 5) 두 번째 문자열부터 다섯번째 문자열까지 (끝까지 잘라내고 싶은 경우 뒤의 숫자 생략) |
QL Devel |
LENGTH | 문자열의 길이 출력 | LENGTH('SQL Developer') | 13 (공백 포함) |
TRIM | 공백 제거 | TRIM( ' SQL ') | SQL |
LTRIM | 왼쪽 공백 제거 | LTRIM( ' SQL') | SQL |
RTRIM | 오른쪽 공백 제거 | RTRIM( 'SQL ') | SQL |
숫자형 함수
숫자를 입력하면 숫자 값을 반환한다.
ABS | 절대값을 반환 | ABS(-20) | 20 |
SIGN | 계산한 값이 양수인지 음수인지 0인지 판단하고 양수일 경우 1, 음수일 경우 -1, 0인 경우 0을 반환 | SING(30-50) | -1 |
MOD | 나머지를 반환 | MOD(8, 3) 8을 3으로 나눈 나머지 반환 |
2 |
CEIL | 무조건 올림 | CEIL(12.345) | 13 |
FLOOR | 무조건 버림 | FLOOR(12.345) | 12 |
ROUND | 반올림 | ROUND(12.345, 2) 소수점 두 번째 자리에서 반올림 |
12.35 |
TRUNC | 숫자 자르기 | TRUNC(12.345, 1) TRUNC(12.345, 2) TRUNC(12.345, 3) |
12.3 12.34 12.345 |
날짜형 함수
DATE 타입의 값을 연산한다.
SYSDATE | 현재 년월일시분초 출력 | SYSDATE | 2021-07-25 07:33:58 |
EXTRACT | 날짜에서 특정 정보 추출 | EXTRACT(YEAR FROM SYSDATE) EXTRACT(MONTH FROM SYSDATE) EXTRACT(DAY FROM SYSDATE) |
2021 7 25 |
TO_NUMBER | 문자를 숫자로 변환 | TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')) TO_NUMBER(TO_CHAR(SYSDATE, 'MM')) TO_NUMBER(TO_CHAR(SYSDATE, 'DD')) TO_NUMBER(TO_CHAR(SYSDATE, 'HH24')) TO_NUMBER(TO_CHAR(SYSDATE, 'MI')) TO_NUMBER(TO_CHAR(SYSDATE, 'SS')) |
2021 7 25 7 33 58 |
TO_CHAR | 숫자나 날짜를 문자로 변환 | TO_CHAR(SYSDATE, 'YYYY') TO_CHAR(SYSDATE, 'MM') TO_CHAR(SYSDATE, 'DD') ... |
2021 7 25 ... |
데이터 변환
- 데이터 변환의 종류
명시적 형 변환 : 데이터 유형을 변환하도록 명시해주는 경우
암시적 형 변환 : DBMS 가 자동으로 데이터 유형을 변환하는 경우
- 데이터 변환 함수 TO_NUMBER & TO_CHAR
사용의 예시
TO_CHAR(SYSDATE, 'YYYY/MM/DD') | 2021/07/25 |
TO_CHAR(123456, '999,999) | 123,456 |
TO_CHAR(123000, '$999,999) | $123,000 |
날짜형 데이터의 연산
SYSDATE -1 | 1일을 뺀 SYSDATE | 2021-07-24 07:33:58 |
SYSDATE -(1/24) | 1시간을 뺀 SYSDATE | 2021-07-25 06:33:58 |
SYSDATE -(1/24/60) | 1분을 뺀 SYSDATE | 2021-07-25 07:32:58 |
SYSDATE -(1/24/60/60) | 1초를 뺀 SYSDATE | 2021-07-25 07:33:57 |
SYSDATE -(1/24/60/60) * 10 | 10초를 뺀 SYSDATE | 2021-07-25 07:33:48 |
단일 행 CASE 표현의 종류
조건절 CASE
CASE
WHEN 조건1 THEN 값1
WHEN 조건 2 THEN 값2
ELSE 값
END
예시)
SELECT CASE
WHEN LEVEL_CD = 'Bronze' THEN '브론즈'
WHEN LEVEL_CD = 'Silver' THEN '실버'
WHEN LEVEL_CD = 'Gold' THEN '골드'
ELSE '언랭'
END
DECODE
DECODE(조건1, 값1, 조건2, 값2, ... , 디폴트값)
NULL
NULL 연산의 결과는 모두 NULL 이다.
NULL 관련 함수
NVL | NULL 값을 실제로 변환한다 | SELECT NVL(LEVEL_CD, '언랭') FROM TB_LEVEL WHERE LEVEL_CD IS NULL LEVEL_CD 가 NULL 이면 '언랭' 으로 출력한다. |
NULLIF(조건1, 조건2) | 조건1과 조건2의 값이 같으면 NULL, 같지 않으면 조건1을 반환한다. | NULLIF('사과', '딸기') NVL 같지 않으므로 '사과' 를 출력한다. |
COALESCE(조건1, 조건2, ...) | 조건들 중 NULL 이 아닌 조건을 만나게 되면 해당 조건을 출력한다. | COALESCE(NULL, NULL, 0) COALESCE(NULL, 0, 6000) 0 을 출력한다. |
'SQL' 카테고리의 다른 글
JOIN (0) | 2021.08.08 |
---|---|
GROUP BY, HAVING, ORDER BY (0) | 2021.08.08 |
SQL 명령어 :: WHERE (0) | 2021.07.11 |
DML, DDL, TCL (0) | 2021.06.06 |
성능 데이터 모델링 (0) | 2021.05.21 |