본문 바로가기

Oracle/Oracle 기초

오라클 기초 공부 - 함수 부분

-- Standard function 

-- DUAL : 가상 테이블 -> 결과 확인용 임시 테이블 
SELECT 1 FROM DUAL; 
SELECT 'A' FROM DUAL; 
SELECT '가' FROM DUAL; 
SELECT 32 * 24 FROM DUAL; 

-- 문자함수 
-- CHR(N) : ASCII 값을 문자로 변환 
SELECT CHR(65) FROM DUAL; 
SELECT CHR(97) FROM DUAL; 

-- 내 점수는 A 입니다. 
SELECT '내 점수는' || CHR(65) || ' 입니다' FROM DUAL; 
-- java 에선 "내 점수는" + CHR(65) + " 입니다" 와 같다  
-- 논리연산자인 OR 연산(||)이 +의 역활을 한다. 

-- LPAD(RPAD) : 나머지를 빈칸 (특정문자) 으로 채운다 
SELECT LPAD('BBB', 10) FROM DUAL; 
SELECT RPAD('BBB', 10) FROM DUAL; 
--오버 로드가 가능하다 
SELECT LPAD('BBB', 10, '-') FROM DUAL; 

-- INSTR == indexOf('a') java - > 0부터 db -> 1 부터 
-- 1부터 시작해서 4가 나온다 
SELECT INSTR('123A456B678C', 'A') FROM DUAL; 
-- 9 이후로 찾기 
SELECT INSTR('123A456B678CB', 'B', 9) FROM DUAL; 

-- 4번째 이후로 1번째 있는 B를 찾아라  
SELECT INSTR('123A456B678CB', 'B', 4, 1) FROM DUAL; 

-- 4번째 이후로 2번째있는 B를 찾아라  
SELECT INSTR('123A456B678CB', 'B', 4, 2) FROM DUAL; 

-- REPLACE : 문자열 치환 
-- BCD 
SELECT REPLACE('AAAAABCD', 'A') FROM DUAL;  
-- A를 a로 치환  aaaaabcd 
SELECT REPLACE('AAAAABCD', 'A', 'a') FROM DUAL; 

-- aaABCD 
SELECT REPLACE('AAAAABCD', 'AA', 'a') FROM DUAL; 

-- TRANSLATE : 문자 치환 
--aaaaaBCD 
SELECT TRANSLATE('AAAAABCD', 'A', 'a') FROM DUAL; 
--문자열이 아닌 문자 치환이라 aaaaaBCD가 된다. 
SELECT TRANSLATE('AAAAABCD', 'AA', 'a') FROM DUAL; 

-- 숫자 함수 

-- 올림 
SELECT CEIL(13.1) FROM DUAL; 

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

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

-- 제곱 
-- 9 
SELECT POWER(3, 2) FROM DUAL; 

-- 반올림 

-- 13 
SELECT ROUND(13.4) FROM DUAL; 

-- 14 
SELECT ROUND(13.5) FROM DUAL; 

-- 부호 +:1 0:0 -:-1 

-- 1 
SELECT SIGN(13.4) FROM DUAL; 

-- 0 
SELECT SIGN(0) FROM DUAL; 

-- -1 
SELECT SIGN(-3.4) FROM DUAL; 

-- 버림 

-- 날짜 버리기등에 사용 
-- 12 
SELECT TRUNC(12.3456) FROM DUAL; 

-- 소수점 2째자리 이후부터 버린다 

-- 12.34 
SELECT TRUNC(12.3456, 2) FROM DUAL; 

-- 10 
SELECT TRUNC(12.3456, -1) FROM DUAL; 

-- CHR 함수와 상반되는 함수  
-- CHR < - > ASCII 
SELECT ASCII('A') FROM DUAL; 

-- 가장 많이쓰이는 함수 
-- 변환 함수  
-- TO_CHAR  
-- DATE -> STRING 
SELECT TO_CHAR(SYSDATE) 
FROM DUAL; 

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD-HH-MI-SS') 
FROM DUAL; 

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') 
FROM DUAL; 

-- 문자열로 나간다 
-- $10,000,000,000 
SELECT TO_CHAR(10000000000, '$999,999,999,999') 
FROM DUAL; 

-- TO_DATE 
-- STRING -> DATE 

-- 19/12/25 
SELECT TO_DATE('20191225', 'YYYYMMDD') 
FROM DUAL; 

-- 19/12/25 
SELECT TO_DATE('12252019', 'MMDDYYYY') 
FROM DUAL; 

-- TO_NUMBER    -> parseInt 
SELECT TO_NUMBER('112') + 24 
FROM DUAL; 


-- LAST_DAY 

SELECT LAST_DAY(SYSDATE) 
FROM DUAL; 

-- 해당 달의 마지막 날짜  
SELECT LAST_DAY('19/11/01') 
FROM DUAL; 

SELECT LAST_DAY('191101') 
FROM DUAL; 

SELECT LAST_DAY(TO_DATE('19/11/01', 'YYYY/MM/DD')) 
FROM DUAL; 


SELECT LAST_DAY(TO_DATE('19-11-01', 'YYYY-MM-DD')) 
FROM DUAL; 

-- SUBSTR   subString(1, 3) "ABCDE" -> "BC" 

-- 3번째 문자 부터 끝까지 CDE 
SELECT SUBSTR('ABCDE', 3) 
FROM DUAL; 

--3번째 문자부터 2개의 문자까지 
SELECT SUBSTR('ABCDE', 3, 2)  
FROM DUAL; 

-- LENGTHB -> 문자의 길이 BYTE형식 
-- LENGTH -> 문자길이 

SELECT LENGTH('ABCDE') FROM DUAL; 

-- MONTH_BETWEEN 찾아보기 
-- 9달 차이  
SELECT MONTHS_BETWEEN(TO_DATE('12012019', 'MMDDYYYY') , TO_DATE('20190301', 'YYYYMMDD')) FROM DUAL;

'Oracle > Oracle 기초' 카테고리의 다른 글

Oracle Select 활용및 JOIN  (0) 2019.12.15
oracle Select 활용 3(Group by, Order by)  (0) 2019.12.15
Oracle Select 활용 2  (0) 2019.12.12
SELECT문 활용 01  (0) 2019.12.12
오라클 기초 공부하기 - 자료형  (0) 2019.12.11