모두의 SQL 4장
실습 환경 : Oracle 11g SQL Test
4장 함수 : 함수로 데이터를 쉽게 가공하기
01 함수란?
함수를 사용하는 목적
- 단일 행 함수) 데이터 값을 계산, 조작하기
- 그룹 함수) 행의 그룹에 대해 계산, 요약하기 ( GROUP BY )
- 데이터 타입 변환) 열의 데이터 타입을 변환하기
02 단일 행 함수 : 데이터 값을 하나씩 계산하고 조작하기
<1> 단일 행 함수
- 데이터 타입의 종류 (Oracle)
저장 데이터 | 데이터 타입 | 설명 |
문자 | CHAR(N) | N 크기만큼 고정 길이 문자 저장 |
문자 | VARCHAR2(N) | N 크기만큼 가변 길이 문자 저장 |
숫자 | NUMBER(P,S) | 숫자 저장(정수 자릿수, 소수 자릿수) |
날짜 | DATE | 9999년 12월 31일까지 저장 가능함 |
- 단일 행 함수란?
한번에 하나의 행을 처리하는 함수
- 단일 행 함수의 종류
데이터 타입에 따라 [문자 타입 함수], [숫자 타입 함수], [날짜 타입 함수], [변환 타입 함수], [일반 함수]로 구분한다.
- 단일 행 함수의 특징
각 행에 대해 수행함
함수 속 함수로 사용 가능함
<2> 문자 타입 함수
- 문자/문자열 데이터는 '작은 따옴표'로 묶어서 표현한다.
함수 | 결과 | 기능 |
LOWER('ABCD') | abcd | |
UPPER('abcd') | ABCD | |
INITCAP('abcd') | Abcd | |
SUBSTR('ABC', 1, 2) | AB | 문자열 일부를 선택 |
REPLACE('AB', 'A', 'E') | EB | |
CONCAT('AB', 'C') | ABC | |
LENGTH('AB') | 2 | |
INSTR('ABCD', 'D') | 4 | 문자의 위치 구하기 |
LPAD('ABCD', 6, '*') | **ABCD | 왼쪽에 문자 채우기 |
RPAD('ABCD',6,'*') | ABCD** | 오른쪽에 문자 채우기 |
LTRIM('ABCD', 'AB') | CD | 왼쪽 문자 지우기 |
RTRIM('ABCD', 'CD') | AB | 오른쪽 문자 지우기 |
LOWER, UPPER, INITCAP : 문자 데이터를 대소문자로 변환하기
데이터 출력 값을 표준화할 때 유용함
SELECT LOWER(ID), UPPER(FIRST_NAME), INITCAP(LAST_NAME)
FROM sql_test_a;
SUBSTR : 인덱스를 이용해서 지정한 길이 만큼 문자열 추출하기
SELECT LOWER(ID), UPPER(FIRST_NAME), INITCAP(LAST_NAME), SUBSTR(LAST_NAME, 1,1)
FROM sql_test_a;
REPLACE : 문자를 찾아서 바꾸기
SELECT LOWER(ID), UPPER(FIRST_NAME), INITCAP(LAST_NAME), SUBSTR(LAST_NAME, 1,1), REPLACE(LAST_NAME, 'J', 'O')
FROM sql_test_a;
LPAD, RPAD : 특정 문자로 자릿수 채우기
데이터 값의 자릿수를 채울 때 유용한 함수
SELECT LPAD(FIRST_NAME, 12, '*') FROM sql_test_a;
LTRIM, RTRIM : ** 방향부터 특정 문자 삭제하기
SELECT LTRIM(FIRST_NAME, 'o') FROM sql_test_a;
TRIM : 공백 제거하기
SELECT FIRST_NAME, TRIM(FIRST_NAME) FROM sql_test_a;
문자열 중간에 있는 공백은 제거되지 않는다.
<3> 숫자 타입 함수
<4> 날짜 타입 함수
<5> 변환 함수
<6> 일반 함수
03 그룹 함수 : 그룹으로 요약하기
'Computer Science > Database' 카테고리의 다른 글
[에러] ERROR 2002 (HY000): Can't connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock' (2) 에러 해결 (0) | 2022.08.23 |
---|---|
# 4 | PyQt에 알람 기능 추가하고 줌에 접속하도록 하기 (0) | 2022.01.27 |
# 3 | PyQt와 sqlite3 연결하기 (0) | 2022.01.26 |
SQL | #3 SELECT 문법, WHERE 절 (0) | 2022.01.26 |
SQL | # 2 오라클 설치 과정 (0) | 2022.01.26 |