[DQL] dual, 함수

sesame·2021년 8월 10일
0

sql

목록 보기
4/24

DUAL 테이블

시스템이 관리하는 테이블에 있는 임의로 사용할 수 있는 임시 테이블

SELECT 35*12
FROM DUAL;

단일행 함수

숫자 함수

이름의미ex
ABS절대 값ABS(-12)12
ROUND반올림ROUND(12.345,2)12.34
TRUNC버림TRUNC(12.345,2)12.34
MOD나누기후 나머지 값MOD(12,10)2
CEIL올림CEIL(12.345)13
FLOOR내림FLOOR(12.345)12
POWER숫자1의 숫자2 제곱POWER(3,2)9

문자 함수

이름의미ex
UPPER대문자로 출력UPPER('sesame')SESAME
LOWER소문자로 출력LOWER('SESAME')sesame
INITCAP이니셜만 대문자로 출력INIRCAP('hong kil ddong')Hong Kil Ddong
LENGTH문자 길이 출력LENGTH('sesame')6
LENGTHB바이트 수 출력LENGTHB('sesame')6
INSTR특정 문자의 위치INSTR(‘sesame','e')2
SUBSTR대상의 시작 위치부터 선택 개수만큼 출력SUBSTR('안녕 오라클', 4, 6)오라클
SUBSTRB대상의 시작 위치부터 선택 바이트만큼 출력
한글 한글자당 3byte
영어 한글자당 1byte
SUBSTRB('안녕 오라클', 4, 6)
REPLACE특정 문자 변경REPLACE('sesame', 'e', 'a')sasama
CONCAT문자열 이어붙이기CONCAT('hello ', 'oracle')hello oracle
LPAD/RPAD빈칸만큼 특정문자로 채우기LPAD('sesame', 8, '*')**sesame
LTRIM/RTRIM공백문자 삭제LTRIM(' sesame ')
RTRIM(' sesame ')
sesame(남은공백)
(남은공백)sesame
TRIM특정 문자 잘라내기TRIM('x' FROM 'xxxSESAxMxxExx')SESAxMxxE

날짜 함수

이름의미
SYSDATE시스템의 현재 날짜와 시간
MONTHS_BETWEEN두 날짜 사이의 개월 수
큰 날짜가 먼저 와야 양수 결과가
나옴 윤년 구분x
ADD_MONTHS주어진 날짜에 개월을 더함
NEXT_DAY주어진 날짜 기준으로 돌아오는 날짜 출력
LAST_DAY주어진 날짜가 속한 달의 마지막 날짜 출력
ROUND주어진 날짜 반올림
TRUNC주어진 날짜 버림
EXTRACT년, 월, 일, 시간, 분, 초 ..의 정보를 추출
select extract(year from sysdate)
from dual;

변환 함수

형식 요소

형식의미
SCC세기를 표시 S는 기원전(BC)
YEAR연도를 알파벳(영어)로 표시
MON월의 약자로 표시(한글일 경우 MONTH와 다르지 않음)
DY날짜에 해당하는 요일을 약자로 표시
DDD연도 기준으로 몇 번째 날 인지 표시(1-366)
DD월 기준으로 몇 번째 날 인지 표시(1-31)
D주 기준으로 몇 번째 날 인지 표시(1-7), 요일을 나타냄(일요일부터 1로 시작)
HH, HH2412시간 기준, 24시간 기준으로 시간을 표시

표현결과
TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS')2021/08/10 12:07:03
TO_CHAR(284000, ‘$999,999’)$284,000
TO_CHAR(SYSDATE, ‘YY/MM/DD’)21/08/10
TO_DATE(’10 8월 21’, ‘YYYY MON DD’)21/08/10
TO_NUMBER(‘1001’)1001

🚨기타 함수

이름의미
NVL(n1, n2)n1이 null인 경우 n2 치환
NVL2(n1, n2, n3)n1이 null이 아니면 n2, null이면 n3로 치환
NULLIF(n1, n2)n1과 n2의 값이 동일하면 null 반환, 다르면 n1반환
DECODE(n1, n2, n3)n1과 n2가 같으면 n3 출력DECODE(flavorno, 1, '딸기맛', 2, '포도맛', 3, '사과맛')
CASE
WHEN THEN
ELSE
END
DECODE와 유사CASE
WHEN flavor = 1 THEN '딸기맛'
WHEN flavor = 2 THEN '포도맛'
WHEN flavor = 3 THEN '사과맛'
ELSE '무슨맛?'
END flavorname

그룹함수

집계함수문법
SUMSUM([ALL / DISTINCT] 속성이름)SUM(price)
AVGAVG([ALL / DISTINCT] 속성이름)AVG(price)
COUNTCOUNT({[[ALL / DISTINCT] 속성이름]*})COUNT(*)
MAXMAX([ALL / DISTINCT] 속성이름)MAX(price)
MINMIN([ALL / DISTINCT] 속성이름)MIN(price)

0개의 댓글