-- 한행으로 결과를 출력하기 위한 테이블 입니다
-- 결과를 한줄로 얻기 위해서 오라클에서 제공하는 테이블 입니다
-- DUAL 테이블은 DUMMY 라는 하나의 컬럼으로 구성되어 있습니다
-- DUAL 테이블은 DUMMY 라는 하나의 컬럼에 X 라는 하나의 로우만을 저장하고 있지만 의미없는 값 입니다
ABS
: 절대값을 구하는 함수 입니다
SELECT -10, ABS(-10)
FROM DUAL;
FLOOR
: 소수점 아래를 버리는 함수 입니다
SELECT 12.1234, FLOOR(12.1234)
FROM DUAL;
ROUND
: 반올림하는 함수 입니다
SELECT 34.5678, ROUND(34.5678, 2)
FROM DUAL;
TRUNC
: 지정한 자리수 이하를 버린 결과 입니다
SELECT TRUNC(34.5678, 2), TRUNC(34.5678)
FROM DUAL;
MOD
: 나눗셈 연산을 한 후에 나온 나머지를 구하는 함수 입니다
SELECT MOD(10, 3), MOD(10, 4)
FROM DUAL;
UPPER
: 대문자로 변환하는 함수 입니다
SELECT 'Hello Oracle', UPPER('Hello Oracle')
FROM DUAL;
LOWER
: 소문자로 변환하는 함수 입니다
SELECT 'Hello Oracle', LOWER('Hello Oracle')
FROM DUAL;
INITCAP
: 문자열의 이니셜만 대문자로 변경 합니다
SELECT 'hello oracle', INITCAP('hello oracle')
FROM DUAL;
LENGTH
: 컬럼에 저장된 데이터의 값이 몇개의 문자로 되어 있는지 계산합니다
SELECT LENGTH('ORACLE'), LENGTH('오라클')
FROM DUAL;
LENGTHB
: 문자열의 길이를 byte 단위로 처리 합니다
SELECT LENGTHB('ORACLE'), LENGTHB('오라클')
FROM DUAL;
SUBSTR
: 문자열의 시작 위치부터 선택 갯수만큼의 문자를 추출합니다
: SUBSTR( 대상, 시작위치, 추출할 갯수 )
-- 오라클에서 index 는 1 부터 시작
SELECT SUBSTR('oracle string test', 8, 6)
FROM DUAL;-- 시작 위치 인자값에 음수를 적용할 수 있는데, 이때는 문자열의 뒤에서부터 시작 위치가 적용 됩니다
SELECT SUBSTR('oracle string test', -4, 4)
FROM DUAL;
INSTR
: 특정 문자가 있는 위치를 알려줍니다
: INSTR( 대상, 검색글자, 시작위치, 몇번째 검색 )
SELECT INSTR('step by step','t',2,2)
FROM DUAL;
SELECT INSTR('데이터베이스','이',3)
FROM DUAL;
LPAD
: 대상 문자열을 명시된 자릿수에서 오른쪽에 표시하고, 남은 왼쪽 자리들은 기호로 채웁니다
-- : LPAD( 대상, 자릿수, 기호 )
SELECT LPAD('padding',10,'#')
FROM DUAL;
LTRIM
: 문자열의 왼쪽(앞)의 공백 문자를 제거합니다
SELECT LTRIM(' trim test ')
FROM DUAL;
RTRIM
: 문자열의 오른쪽(뒤)의 공백 문자를 제거합니다
SELECT RTRIM(' trim test ')
FROM DUAL;
SYSDATE
: 시스템의 현재 날짜
SELECT SYSDATE
FROM DUAL;
-- 날짜 연산
-- 날짜 + 숫자 : 해당 날짜부터 그 기간만큼 지난 날짜를 계산
-- 날짜 - 숫자 : 해당 날짜부터 그 기간만큼 이전 날짜를 계산
-- 날짜 - 날짜 : 두 날짜 사이의 기간을 계산
SELECT SYSDATE-1 어제, SYSDATE 오늘, SYSDATE+2 모레
FROM DUAL;
ROUND
:ROUND( date, 포멧모델 )
-- 포맷 모델 날짜를 사용해서, 날짜를 반올림
-- :포맷 모델 단위
-- DDD 일몰 기준
-- HH 시간 기주
-- MONTH 월몰 기준( 16일 기준 )
TRUNC
: 날짜 함수도 잘라낼 수 있음
MONTHS_BETWEEN
: 날짜와 날짜 사이의 개월 수
:MONTHS_BETWEEN( date_1, date_2 )
-직원들의 근무 개월수
SELECT ename, sysdate, hiredate, TRUNC(MONTHS_BETWEEN(sysdate, hiredate))
FROM EMP;
ADD MONTHS
: 특정 개월 수 더한 날짜
:ADD_MONTHS( date, number )
NEXT_DAY
: 날짜를 기준으로 최초로 돌아오는 요일에 해당하는 날짜를 반환
: NEXT_DAY( date, 요일 )
LAST_DAY
: 해당 날짜가 속한 달의 마지막 날짜를 반환
TO_CHAR
: 날짜 - >TO_CHAR( 날짜데이터, '출력형식' )
-- 현재 날짜와 시간 출력
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD AM HH24:MI:SS') "현재시간"
FROM DUAL;
:숫자 - >TO_CHAR( 날짜데이터, '출력형식' )