모든 함수는 Oracle 11g를 기준으로 작성되었다.
간략하게 사용해본 함수를 정리한 것이고, 자세한 사용법이나 정확한 정보는 Oracle에서 제공하는 레퍼런스를 참고하는게 좋다. 정리도 잘되어있고, 각 기능마다 예시로 함께 나와있다. 아래는 레퍼런스로 바로 이동.
Functions
Functions
docs.oracle.com
Sigle Row Function
NUMERIC FUNCTION
ABS(N) 절대값
CEIL(N) 반올림 CEIL(X.XX) 소수점에서 올림
FLOOR(N1) 소수점 이하 버림
ROUND(N1, Integer) 반올림. 정수범위,소수점 범위 모두 가능
TRUNC(N1,N2) N1을 N2자리에서 버림(잘라낸다.) N2자리를 비워두면 소수점자리를 잘라내 정수화 한다.
MOD(N1,N2) MOV(SAL,500) N1을 N2로 나눈 나머지
POWER(N1,N2) POWER(2,3) N1의 N2제곱 2^3=8;
CHARSET FUNCTION
CONCAT(CH1,CH2) CH1과 CH2를 이어붙인다.
연달아 연결도 가능하다. SELECT CONCAT( CONCAT( ENAME, 'IS A ' ), JOB )
INITCAP(STR) 문자열 각 단어의 첫글자를 대문자로 뒤글자는 소문자로 자동 변경
UPPER(STR) 문자열 전부 대문자로
LOWER(STR) 문자열 전부 소문자로
LENGTH(STR) 주어진 문자열의 길이를 숫자로 반환, 띄어쓰기도 포함된다.
SUBSTR(STR,N1,N2) 문자열의 N1자리부터 N2길이만큼 잘라서 반환.
N1이 음수라면 뒤에자리부터 세어서 위치를 정함.
INSTR(STR, search_ch, [N1], [N2]) 문자열에서 search_ch가 있는지 N1자리부터 시작해서
N2번째로 찾아지는 search_ch위치를 숫자로 반환한다.
N1과 N2를 기입하지 않으면, 그냥 처음부터 search_ch를 찾다가 첫번째 search_ch 위치를 반환.
TRIM(trim_STR FROM STR) 문자열 양 끝단의 trim_STR을 제거, 따로 입력하지 않으면 공백만 제거되고 주어진 trim_STR가 반복되면 반복 전부가 제거된다. (단일 ch가 아닌 문자열을 지정할 수 도 있다.)
LTRIM(trim_ch, STR) 문자열의 왼쪽만 TRIM
RTRIM(trim_ch, STR) 문자열의 오른쪽만 TRIM
LPAD(STR, N1, EXPR) 문자열의 좌측을 지정한 EXPR로 채워서 전체 길이가 N1이 되게 맞춤.
RPAD(STR, N1, EXPR) 문자열의 우측을 지정한 EXPR로 채워서 전체 길이가 N1이 되게 맞춤.
DATETIME FUNCTION
SYSDATE 현재 ORACLE SYSTEM상의 시간 리턴
ADD_MONTHS(DATE, N1) DATE 값에 N1만큼 달수를 더한 DATE 리턴, 음수도 가능
CURRENT_DATE 현재 DATETIME 반환
LAST_DAY(DATE) DATE상의 해당 월 마지막 날의 DATE 리턴
NEXT_DAY(DATE, '요일') DATE를 기준으로 다음번 요일에 해당하는 DATE 리턴
ROUND(DATE, 'FMT') DATE에서 FMT('YEAR' or 'MONTH' ...) 기준으로 반올림 한 DATE를 리턴
ex) SELECT TO_CHAR(ROUND(SYSDATE, 'YEAR') , 'YY-MM-DD') -> 올해 첫날 기준 DATE 리턴해 STR으로 출력
TRUNC(DATE, 'FMT')
CONVERSION TYPE
형변환에선 포맷 지정이 중요하다.
DATE - CHAR 간의 포맷 'YEAR', 'MONTH', 'DD', 'YYYY-MM-DD', 'HH' 'AM' 'PM' 등
NUMBER - CART 간의 포맷 '999,999', '000000' 등
TO_CHAR(DATETIME, FORMAT)
ex) SELECT TO_CHAR( SYSDATE, 'YYYY-MM-DD' )
'YYYY-MM-DD, HH:MI:SS' //2019-11-17, 10:11:12
'YEAR', 'MONTH', 'DD' //2019년, 11월, 17일
'DAY' //월요일
'DDD', 'D' //312일(1년기준 현재일 표시), 1(일주일 기준 일요일1일)
TO_CHAR(NUMBER, FORMAT) //포맷을 안넣으면 그냥 숫자만 'NUMBER'모양으로 만든다.
ex) SELECT TO_CHAR(SAL, '999,999') //숫자와 함께 포멧을 뒤에 ' '안에 표시해줘야한다.
//포멧을 9로 표현시 자리만 확보, 0으로 표시할경우 빈자리를 0으로 채운다.
TO_DATE(STR, FORMAT)
ex) SELECT TO_DATE(
'January 15, 1989, 11:00 A.M.',
'Month dd, YYYY, HH:MI A.M.',
'NLS_DATE_LANGUAGE = American')
FROM DUAL;
TO_NUMBER(STR,FORMAT)
SELECT TO_NUMBER( '1000' , '9999' ) //1000숫자 반환.
( '1,000' , '9,999' )'
DECODE 대상이 되는 COLUMN 값에 따라 결과값을 대조시킴.
(COLUMN_NAME, 1, RESULT1 ( ) 안에 모든 경우를 다 넣어줌. 컬럼의 값이 1일때 RESULT1
2, RESULT2 값이 2일때 RESULT2
RESULT3 ) 나머지의 경우 RESULT3을 대입시킴.
SELECT product_id,
DECODE (warehouse_id, 1, 'Southlake',
2, 'San Francisco',
3, 'New Jersey',
4, 'Seattle',
'Non domestic') "Location"
CASE 대상이 되는 COLUMN값에 따라 결과값을 대조시킴, 대상의 값을 조사할때 범위도 넣어줄수 있다.
CASE column_name WHEN search1 THEN result1 CASE쿼리는 ( )나 , 없이 나열한다.
WHEN search1 THEN result1 WHEN뒤에 조건, THEN뒤에 대입 값을 적는다.
ELSE result3 END ELSE뒤에 값을 넣어서 DEFUALT대입값을 넣을 수 있다.(생략도 가능)
END로 끝을 알림.
'ORACLE > ORACLE 기초' 카테고리의 다른 글
7. DML-Insert, Delete, Update (0) | 2020.09.12 |
---|---|
6. DML - Select구문 (0) | 2020.09.12 |
4. 연산자 Operator (0) | 2020.09.12 |
3. SQL의 기본 구성 구문 (0) | 2020.09.12 |
2. Oracle Data Type (0) | 2020.09.12 |