공부/Database 복습

3.Database 함수

ChoiDooSic 2021. 7. 19. 02:07

/*
# dual 테이블
- 연습용 테이블
- 하나의 행만 가지고 있어서 계산 해볼 때 편리하게 사용할 수 있다 
*/


SELECT 123 + 456 FROM employees;
SELECT 123 + 456 FROM dual;


--abs(n) : 절대 값
SELECT abs(-1234) FROM dual;
SELECT abs(1234) FROM dual;

SELECT abs(-1234) FROM dual;


--floor(f) :
SELECT floor(1234.1234) FROM dual;

--ceil(f) : 소수점 아래 올림
SELECT ceil(1234.1111) FROM dual;

SELECT ceil(1234.1111) FROM dual;


-- round(f) : 반올림
SELECT round(1234.567) FROM dual;
SELECT round(1234.456) FROM dual;

SELECT round(1234.567) FROM dual;


-- mod(n,m) : 나머지 연산
SELECT mod(56, 24) FROM dual;
SELECT mod(13, 10) FROM dual;

SELECT mod(56, 24) FROM dual;


-- sysdate : 현재시간
SELECT sysdate FROM dual;

SELECT sysdate FROM dual;


-- TO_CHAR() : 다른 타입을 문자 타입으로 변환하는 함수 
SELECT to_char(1234) FROM dual; 


SELECT to_char(sys date, ‘HH24:mi:SS’) FROM dual;
SELECT to_char(sys date, ‘HH:mi:SS’) FROM dual;
SELECT to_char(sys date, ‘YYYY/MM/DD HH24:mi:SS’) FROM dual;

SELECT to_char(sys date, ‘YYYY/MM/DD HH24:mi:SS’) FROM dual;


 # 숫자를 문자로 변환할 때의 포맷 
1. 9 = 빈 자리를 공백으로 채움
2. 0 = 빈 자리를 0으로 채움 

SELECT to_char(100, '9999999999') FROM dual; (9999안에 , 도 찍을 수 있음)
SELECT to_char(100, '0000000000') FROM dual;

SELECT to_char(100, '9999999999'), to_char(100, '0000000000')  FROM dual; 


SELECT to_char(100, '9,999,999,999L') FROM dual; L도 넣을수 있음  
SELECT to_char(100, '9,999,999,999') || '원' FROM dual; 이어서 붙일 수 있음 



-- trunc(value, n) : 지정한 자리 값 미만을 잘라낸다
SELECT trunc(123456.123, 2) FROM dual;
SELECT trunc(123456.123, -2) FROM dual;
SELECT trunc(123456.123, -5) FROM dual;


-- 날짜 타입도 지정한 자리값 미만을 잘라낸다 
SELECT trunc(sysdate, 'year') FROM dual;
SELECT trunc(sysdate, 'month') FROM dual;
SELECT trunc(sysdate, 'day') FROM dual; -- 한 주의 시작을 일요일로 잡기때문에 해당 일의 일요일의 값을 가져온다 

SELECT trunc(sysdate, 'year'), trunc(sysdate, 'month'), trunc(sysdate, 'day')FROM dual;


-- substr(value, start, length) : 문자열 자르기
-- # 오라클은 1번이 첫 번째 인덱스다
SELECT substr('Hello, nice to meet y', 3, 9) FROM dual; 

-- # 숫자를 하나만 넣으면 해당 숫자부터 맨 뒤까지 자른다 
SELECT substr('Hello, nice to meet y', 5) FROM dual;

SELECT substr('Hello, nice to meet y', 3, 9), substr('Hello, nice to meet y', 5) FROM dual;



-- lpad (value, length, str) : 왼쪽에 원하는 값을 원하는 길이만큼 채운다 
-- road (value, length, str) : 오른쪽에 원하는 값을 원하는 길이만큼 채운다
SELECT lpad('coffee', '30', '#') FROM dual;
SELECT rpad('coffee', '30', '!@#') FROM dual;

-- ltrim(value, str) : 왼쪽의 제거하고 싶은 문자열을 제거한다
-- rtrim(value, str) : 오른쪽의 제거하고 싶은 문자열을 제거한다
-- trim(str from value) : 양쪽의 제거하고 싶은 문자열을 모두 제거한다 
SELECT ltrim('!@#!@#!@#!@#water', '!@#') FROM dual; 
SELECT rtrim('coke@@@@' , '@@@@') FROM dual;
SELECT trim('@' FROM '@@@@coke@@@@') FROM dual;


-- 날짜 타입 연산 
SELECT sysdate AS 오늘, sysdate+1 AS 내일, sysdate-1 AS 어제 FROM dual;

SELECT sysdate AS 오늘, sysdate+1 AS 내일, sysdate-1 AS 어제 FROM dual;


-- 날짜 타입 연산의 기본 단위는 일이다
SELECT last_name, floor(sysdate - hire_date ) || '일' AS 근무일 FROM employees;


-- 개월수로 보고싶으면 months_between(date, sub_date)을 사용해야 한다
SELECT last_name, months_between(sysdate, hire_date) || '개월'  AS 근무개월 FROM employees;


-- 몇 년이 흘렀는지 구해보기
SELECT last_name, floor(months_between (sysdate, hire_date) /  12 ) ||
'년' AS 근무년 FROM employees;

-- next_day(date, day) : 해당 날짜를 기준으로 다음 요일을 찾는다
SELECT next_day(sysdate, '화요일' ) FROM dual;

-- last_day(date) : 해당 날짜를 기준으로 이번 달의 마지막 날을 찾는다 
SELECT last_day(sysdate) FROM dual;

SELECT next_day(sysdate, '화요일' ), last_day(sysdate) FROM dual;

'공부 > Database 복습' 카테고리의 다른 글

6.Database 조인  (0) 2021.08.01
5.Database 정렬  (0) 2021.07.26
4.Database 그룹 함수  (0) 2021.07.19
2.Database WHERE  (0) 2021.07.18
1.데이터베이스 SELECT  (0) 2021.07.17