Oracle 함수 기능 정리

손건·2021년 3월 29일
0

IT

목록 보기
9/13

MOD(A,B)

A를 B로 나눈 나머지

  • MOD(10/13) -> 10

TO_CHAR(값, 형식)

전달된 값을 주어진 형식으로 반환

  • 숫자 형식 : 9 -> 일반적인 숫자를 의미/ 0 -> 비어 있을 경우 0을 반환
  • TO_CHAR(123, 00009) -> 00123 (비어있는 2칸에 0을 넣음)
  • TO_CHAR(SYSDATE,'YY/MM/DD') -> 21/03/26 (날짜 형식을 변경)

TRUNC(값, 옵션)

주어진 값을 옵션에 따라 잘라버림, 옵션이 없다면 소수점을 자름

  • TRUNC(123.456) -> 123 옵션이 없을 경우 소수점 전체를 자른다.
  • TRUNC(123.456, 2) -> 123.45 소수점 둘째 자리까지 남김
  • 그외 DD,HH24, YEAR, MONTH 등 날짜를 자르는 옵션이 있다.

ROUND(값, 옵션)

주어진 값을 옵션에 따라 반올림한다.

  • ROUND(123.456) -> 123 소수점 0번쨰 자리 까지 표기, 첫째 자리인 4에서 반올림
  • ROUND(123.456,1) -> 123.5 소수점 첫쨰 자리까지 표기, 둘째 자리인 5에서 반올림

ROLLUP (인자, [인자])

그룹핑된 인자의 총합을 넣어준다. 인자가 여러개이면 전체 합계와 소계를 넣어준다.

별도 링크 참고 https://gent.tistory.com/57

SELECT DNAME,  JOB ,
count(*) AS "TOTAL EMP", SUM(SAL) "TOTAL SAL" FROM emp E, dept D
WHERE e.deptno =  d.deptno
GROUP BY ROLLUP(DNAME, JOB)


(NULL) 로 출력되는 부분이 소계 및 전체 합계

GROUPING(인자)

그룹핑 하는 컬럼값이 NULL이면 1, NULL이 아니면 O을 반환한다.
DECODE(), CASE WHEN() 과 활용하여 소계 칼럼에 이름을 지정할수 있다.

SELECT DECODE(GROUPING(DNAME), 1, 'ALL DEPT', DNAME), DECODE(GROUPING(JOB),1,'ALL JOB', JOB) ,
count(*) AS "TOTAL EMP", SUM(SAL) "TOTAL SAL" FROM emp E, dept D
WHERE e.deptno =  d.deptno
GROUP BY ROLLUP(DNAME, JOB)


위 내용과 결과는 동일하지만 이름이 생겼다.

LPAD(값, 문자길이, 채울문자)

문자열 왼쪽부터 주어진 길이로 채움

  • LPAD('AA', 5, '0') : -> 000AA

RPAD(값, 문자길이, 채울문자)

문자열 오른쪽 부터 주어진 길이로 채움

  • RPAD('BB',5, '0') : -> BB000

REPLACE(값, 찾을문자, 변환값)

특정문자를 찾아 변경

  • REPLACE('ABBCCDD', 'BB', '') -> ACCDD

SUPSTR(값, 시작위치, 길이)

특정문자을 어느 위치에서 자른다.

  • SUPSTR('SONGEON',2) -> ONGEON
  • SUPSTR('SONGEON',2,3) -> ONG

/+ PARALLEL(테이블 명, 동시처리 개수) /

주어진 쿼리를 수행할때 프로세스를 여러개 동시에 수행한다. 속도는 빨라질수 있지만 자원을 많이 사용하고 잘못하면 DB가 죽을수도 있으니 주의해서 사용하여야 한다.

  • select /+ parallel(8) / .. from EMP;

WITH 테이블명 AS ()

쿼리에서 1번 사용될 임시 테이블을 제작, 뷰와 비슷한 기능을 하지만 쿼리문 내부에서만 실행됨, 대신 쿼리를 실행할떄 1번만 파싱 됨으로 with로 생성된 테이블을 쿼리에서 많이 불러 사용한다면 성능상 유리하다.

WITH ex AS(
	SELECT 'aaa' as A FROM DUAL 
	UNION 
	SELECT 'bbb' as A FROM DUAL 
)

SELECT * FROM ex

profile
4년차 게임기획자, 1년차 웹개발자

0개의 댓글