02_함수

Hyunny ·2023년 5월 16일
0

SQL

목록 보기
2/11
post-thumbnail

📌 함수 : 컬럼의 값을 읽어서 연산한 결과를 반환

📄 단일행 (SINGLE ROW) 함수 : N개의 값을 읽어 N개의 결과 반환

📄 그룹(GROUNP) 함수 : N개의 값을 읽어 1개의 결과 반환

함수는 SELECT절, WHERE절, ORDER BY, GROUP BY, HAVING 사용 가능


🔊 단일행 함수

📖 LENGTH (문자열 | 컬럼) : 문자열 길이 반환
SELECT LENGTH('HELLO WORLD') FROM DUAL;

📄 12글자인 이메일만 조회
SELECT EMAIL, LENGTH(EMAIL) FROM EMPLOYEE
WHERE LENGTH(EMAIL) = 12;

📖 INSTR ('문자열' | 컬럼명, '찾을문자' [찾을 위치 시작위치, [순번]]
문자열에서 맨 앞에 있는 B 위치 조회
SELECT INSTR ('AABAACAABBAA', 'B') FROM DUAL;

📖 SUBSTR ('문자열' | 컬럼명, 잘라내기 시작할 위치 [, 잘라낼 길이] )
칼럼이나 문자열에서 지정한 위치부터 지정된 길이만큼 문자열을 잘라내서 반환, 잘라낼 길이 생략 시 끝까지 잘라냄
SELECT EMP_NAME, SUBSTR(EMAIL ,1, INSTR(EMAIL,'@') -1 )

📖 TRIM ([옵션] '문자열' | 컬럼명 [FROM '문자열' | 컬럼명] )
주어진 컬럼이나 문자열의 앞, 뒤, 양쪽에 있는 지정된 문자를 제거
--> (보통 양쪽 공백 제거에 많이 사용)
-- 옵션 : LEADING(앞쪽), TRAILING(뒤쪽), BOTH(양쪽, 기본값)
SELECT ' K H ',TRIM(' K H ') FROM DUAL; -- 양쪽 공백 제거 (중간 미포함)


🔊 숫자 관련 함수

📖 ABS(숫자 | 컬럼명) : 절대 값
SELECT ABS(10), ABS(-10) FROM DUAL;

📖 MOD (숫자 | 컬럼명 , 숫자 | 컬럼명) : 나머지 값 반환
SELECT EMP_NAME, SALARY, MOD(SALARY, 1000000)

📖 ROUND(숫자 | 컬럼명 [,소수점 위치]) : 반올림
_SELECT 123.456, ROUND (123.456) FROM DUAL; -- 소수점 첫째 자리에서
컬럼명 연산 값에 적용하려면 괄호로 묶어주고 앞에 ROUND 작성

💡
📖 CEIL (숫자 | 컬럼명) : 올림
📖 FLOOR(숫자 | 컬럼명) : 내림
-> 둘 다 소수점 첫째 자리에서 올림/ 내림 처리

📖 TRUNC (숫자 | 컬럼명 [,위치]) : 특정 위치 아래를 버림 (절삭)
SELECT TRUNC(123.456,1), TRUNC(123.456,-1)


🔊 날짜 관련 함수

📖 SYSDATE : 시스템에 현재 시간(년,월,일,시,분,초)을 반환

📖 SYSTIMESTAMP : SYSDATE + MS 단위 추가

📖 MONTHS_BETWEEN (날짜, 날짜) : 두 날짜의 개월 수 차이 반환

📖 ADD_MONTHS(날짜, 숫자) : 날짜에 숫자만큼의 개월 수를 더함

📖 LAST_DAY(날짜) : 해당 달의 마지막 날짜를 구함

📖 EXTRACT : 년, 월, 일 정보를 추출하여 리턴
EXTRACT ( YEAR FROM 날짜) : 년도만 추출
EXTRACT ( MONTH FROM 날짜) : 월만 추출
EXTRACT ( DAY FROM 날짜) : 일만 추출


🔊 형변환 함수

📖 문자열 (CHAR), 숫자(NUMBER), 날짜(DATE) 끼리 형변환 가능
-- TO_CHAR(날짜, [포맷] ) : 날짜형 데이터를 문자형 데이터로 변경
-- TO_CHAR(숫자, [포맷] ) : 숫자형 데이터를 문자형 데이터로 변경

📖 <패턴>
-- 9 : 숫자 한칸을 의미, 여러 개 작성 시 오른쪽 정렬
-- 0 : 숫자 한칸을 의미, 여러 개 작성 시 오른쪽 정렬 + 빈칸 0 추가
-- L : 현재 DB에 설정된 나라의 화폐 기호 (원 표시)

📖 날짜에 TO_CHAR 적용
-- YYYY : 년도 / YY : 년도 (짧게)
-- RRRR : 년도 / RR : 년도 (짧게)
-- MM : 월 / DD : 일
-- AM 또는 PM : 오전/오후 표시
-- HH : 시간/ HH24 : 24시간 표기법
-- MI : 분 / SS : 초
-- DAY : 요일(전체) / DY : 요일(요일명만 표시)

📖 날짜로 변환 TO_DATE
-- TO_DATE(문자형 데이터, [포맷]) : 문자형 데이터를 날짜로 변경
-- TO_DATE(숫자형 데이터, [포맷]) : 숫자형 데이터를 날짜로 변경
--> 지정된 포맷으로 날짜를 인식함

💡
-- Y : 현재 세기 (21세기 == 20XX년 == 2000년대)
-- R : 1세기 기준으로 절반 (50년) 이상이면 이전 세기(1900년대)
-- 절반 (50년) 미만이면 현재 세기(2000년대)

🔊 숫자 형변환

📖 TO_NUMBER(문자데이터, [포맷] ) : 문자형 데이터를 숫자 데이터로 변경

🔊 NULL 처리 함수

📖 NVL(컬럼명, 컬럼값이 NULL일때 바꿀 값): NULL인 컬럼값을 다른 값으로 변경

📖 NVL2(컬럼명, 바꿀값1, 바꿀값2)
-- 해당 컬럼의 값이 있으면 바꿀값1로 변경,
-- 해당 컬럼이 NULL이면 바꿀값2로 변경

🔊 선택 함수(DECODE,CASE WHEN,THEN,END) : 여러 가지 경우에 따라 알맞은 결과를 선택할 수 있음

📖 DECODE(계산식 | 컬럼명, 조건값1, 선택값1, 조건값2, 선택값2........, 아무것도 일치하지 않을때 )
-- 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환
-- 일치하는 값을 확인(자바의 SWITCH와 비슷함)

📖 CASE WHEN 조건식 THEN 결과값
-- WHEN 조건식 THEN 결과값
-- ELSE 결과값
-- END

-- 비교하고자 하는 값 또는 컬럼이 조건식과 같으면 결과 값 반환
-- 조건은 범위 값 가능

🔊 그룹 함수 : 하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등의 하나의 결과 행으로 반환하는 함수

📖 SUM(숫자가 기록된 컬럼명) : 합계
📖 AVG(숫자가 기록된 컬럼명) : 평균
📖 MIN(컬럼명) : 최소값
📖 MAX(컬럼명) : 최대값
타입 제한 없음 (숫자 : 대/소, 날짜 : 과거/미래, 문자열 : 문자 순서)

📖 COUNT (DISTINCT 컬럼명) : 중복을 제거한 행 개수를 헤아려서 리턴
-- COUNT (*) : NULL을 포함한 전체 행 개수를 리턴
-- COUNT (컬럼명) : NULL을 제외한 실제 값이 행 개수를 리턴함

profile
개발 learning ... 📝

0개의 댓글