데이터베이스/Oracle

[Oracle] 기본 함수 (Standard Function, DUAL TABLE) 문자형 함수, 숫자형 함수, 날짜 함수 정리

반응형

-- Standard Function

-- DUAL TABLE : 가상테이블 -> 결과용 테이블

SELECT 1 FROM DUAL; --임시테이블이 만들어진다. (값만 확인할 수 있는 테이블)
SELECT 'A' FROM DUAL; --문자 가능
SELECT '가나' FROM DUAL; --문자열 가능
SELECT 23*45 FROM DUAL; --연산 가능

-- 문자함수
-- CHR( 숫자 ) : ASCII 값으로 변환

SELECT CHR(65) FROM DUAL;
SELECT CHR(97) FROM DUAL;

-- String str = "안녕" + "하세요"
SELECT '내 점수는 ' || CHR(65) || '입니다' FROM DUAL; -- + 대신 || 연산자 사용.

 

-- LPAD(RPAD) : 나머지 빈칸을 지정문자로 채운다.

SELECT LPAD('BBB', 10) FROM DUAL;
SELECT RPAD('BBB', 10) FROM DUAL;
SELECT LPAD('BBB', 10, '-') FROM DUAL;
SELECT RPAD('124', 10, '0') FROM DUAL;

-- INSTR == indexOf('a') -> 'abcde' -> 0 = 'a'의 index위치 출력

SELECT INSTR ('abcde', 'a') FROM DUAL; -- Oracle에서의 index는 1부터 시작
SELECT INSTR ('123ABC456DEFABC', 'A') FROM DUAL;
SELECT INSTR ('123ABC456DEFABC', 'A', 7) FROM DUAL; -- 7번째 위치에서 제일 가까운 'A'의 위치
SELECT INSTR ('123ABC456DEFABCABC', 'A', 7, 1) FROM DUAL; -- 7번째 이후에 1번째 'A'
SELECT INSTR ('123ABC456DEFABCABC', 'A', 7, 2) FROM DUAL; -- 7번째 이후에 2번째 'A'

-- REPLACE : 문자열 치환

SELECT REPLACE('AAAAABCD', 'A') FROM DUAL; -- 바꿀 문자 지정 안함
SELECT REPLACE('AAAAABCD', 'A', 'a') FROM DUAL; -- 'A'문자를 'a'로 치환
SELECT REPLACE('AAAAABCD', 'AA', 'a') FROM DUAL; -- 'AA'문자를 'a'로 치환

-- TRANSLATE : 문자 치환

SELECT TRANSLATE('AAAAABCD', 'A', 'a') FROM DUAL; --replace와는 다르게 글자를 지정하지 않으면 에러
SELECT TRANSLATE('AAAAABCD', 'AA', 'a') FROM DUAL; --문자 치환이다!

-- SUBSTR : 문자 뽑아내기

SELECT SUBSTR('AAAAABCD', 1, 6) FROM DUAL;
SELECT SUBSTR('ABCDE', 3) FROM DUAL; --3번째 부터 끝까지
SELECT SUBSTR('ABCDE',3,2) FROM DUAL; --"CD" 3번째 글자부터 2글자 가져오기

-- 숫자
-- 올림
SELECT CEIL(13.1) FROM DUAL; --14

 

-- 내림
SELECT FLOOR(13.9) FROM DUAL; --13

 

--나눈 나머지
SELECT MOD(3, 2) FROM DUAL; --1

 

--승수
SELECT POWER(2, 3) FROM DUAL; --8

 

--반올림

SELECT ROUND(13.5) FROM DUAL;
SELECT ROUND(13.4) FROM DUAL;

--부호 + -> 1 // 0 -> 0 // - -> -1
-- SIGN

SELECT SIGN(13.4) FROM DUAL;	-- 1
SELECT SIGN(0) FROM DUAL;	-- 0
SELECT SIGN(-0.4) FROM DUAL;	-- -1

-- TRUNC 버림(소수점)

SELECT TRUNC(123.456) FROM DUAL;
SELECT TRUNC(123.456, 2) FROM DUAL; --소수점 2번째 자리 까지
SELECT TRUNC(123.456, 1) FROM DUAL;
SELECT TRUNC(123.456, -1) FROM DUAL; --반대로 1번째 자리에서 버림
SELECT TRUNC(123.456, -2) FROM DUAL;

-- TO_CHAR : DATE -> VARCHAR2

SELECT TO_CHAR (SYSDATE) FROM DUAL;
SELECT TO_CHAR (SYSDATE, 'YYYY/MM/DD HH:MI:SS') FROM DUAL;
SELECT TO_CHAR (10000000, '$999,999,999') FROM DUAL;

-- TO_DATE : VARCHAR -> DATE

SELECT TO_DATE('20210525') FROM DUAL;
SELECT TO_DATE('20210525', 'YYYY') FROM DUAL;

-- TO_NUMBER VARCHAR2 -> NUMBER

SELECT TO_NUMBER('123') FROM DUAL;

-- LAST_DAY

SELECT LAST_DAY('22/02/02') FROM DUAL; --그달의 마지막 날짜 가져옴

SELECT LAST_DAY(TO_DATE ('210310', 'YYMMDD')) FROM DUAL;

CREATE TABLE number_tb(
	COL1 NUMBER(7,2),
	COL2 NUMBER(5,3)
)

INSERT INTO number_tb VALUES (12345.64, 12.234);

 

-- CONCAT 찾아보기

--날짜 함수 정리 찾아보고 해보기!!

 

문자형 함수(Character Function)정리

종 류 함 수      
변환 함수 LOWER 알파벳 값을 소문자로 변환
UPPER 알파벳 값을 대문자로 변환
INITCAP 첫번째 글자만 대문자로 변환
문자 조작 함수 CONCAT 두 문자열을 연결(합성)
SUBSTR 문자열 중 특정 문자 또는 문자열의 일부분을 선택
LENGTH 문자열의 길이를 구함
INSTR 명명된 문자의 위치를 구함
LPAD 왼쪽 문자 자리 채움
RPAD 오른쪽 문자 자리 채움
LTRIM 왼쪽 문자를 지움
RTRIM 오른쪽 문자를 지움
TRANSLATE 특정 문자열을 대체
REPLACE 특정 문자열을 대신

 

숫자형 함수 정리

함 수      
ROUND 숫자를 반올림
TRUNC 숫자를 절삭
MOD 나머지를 구함
POWER 거듭제곱
SQRT 제곱근
SIGN 양수, 음수,0인지를 구분
CHR ASCII값에 해당하는 문자를 구함

 

날짜 함수 정리

날짜 함수 설 명
MONTHS_BETWEEN 두 날짜 사이의 월수를 계산
ADD_MONTHS 월을 날짜에 더합니다.
NEXT_DAY 명시된 날짜로부터 다음 요일에 대한 날짜를 나타냅니다.
LAST_DAY 월의 마지막 날을 계산 합니다.
ROUND 날짜를 반올림 합니다.
TRUNC 날짜를 절삭 합니다.
반응형