DataBase/Oracle DB

Do it 오라클 (06. 오라클함수)

ABCD 2023. 3. 9.

SQL문(쿼리문)은 대소문자 구분이 없지만, 데이터는 대소문자 구분이 필수!

 

함수란?

  • 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 명령어
  • 오라클 함스의 종류
    • 내장함수 -> 기본으로 제공
      1. 단잉행 함수
      2. 다중행 함수
    • 정의함수 -> 사용자가 필요에 의해 직접 정의

 

문자함수

  • UPEER( ) -> 모두 대문자로 변경
    • 사원이름이 scott인 사원 대소문자 상관없이 찾기
SELECT * FROM EMP
WHERE UPPER(ENAME) = UPEER('scott');
  • LOWWER( ) -> 모두 소문자로 변경
  • INITCAP( ) -> 첫번째 글자만 대문자로 변경
  • LENGTH( ) -> 문자열의 길이를 구하는 함수
  • SUBSTR(대상, start, [length]) -> 필요한 부분만 추출
  • INSTR(대상, 찾으려는 문자, [strat], [~th]) -> 특정 문자의 위치 찾기
    • 위치 값을 음수로 사용하면 오른쪽 끝부터 왼쪽으로 검색
    • 찾으려는 데이터가 없으면 0을 반환
  • REPLACE(대상, target, change) -> 문자를 대치하는 함수
  • LPAD, RPAD(대상, length, ['change']) -> 빈공간을 'change'로 채우는 함수(입력안하면 공백)
  • CONCAT( ) -> 두 문자를 합치는 함수
  • TRIM, LTRIM, RTRIM(대상, [삭제할문자]) -> 특정 문자를 삭제(문자 생략시 공백을 제거)
    • TRIM은 데이터를 혹시나 들어 있을지도 모르는 양쪼끝의 공백을 제거할 때 많이 사용
    • ex) 유저가 로그인시 실수로 스페이스바를 입력했을 경우

 

문자함수

  • ROUND(대상, [location]) -> 반올림 함수
    • 양수 : 해당 숫자자리까지 보임
    • 0 : 소수첫째자리에서 반올림
    • 음수 : 해당 숫자의 절댓값 자리에서 반올림
  • TRUNC(대상, [location]) -> 버림 함수
  • CEIL( ) -> 지정 숫자보다 큰 수 중 가장 작은 정수
  • FLOOR( ) -> 지정 숫자보다 작은 수 중 큰 정수
  • MOD(대상, 나눌숫자) -> 지정함수를 나누고 난 나머지 값

 

날짜함수

  • 연산(일수로 계산됨)
    • 날짜 + 숫자 : 가능
    • 날짜 - 숫자 : 가능
    • 날짜 - 날짜 : 두 날짜의 차이를 계산
    • 날짜 + 날짜 : 불가능
  • ADD_MONTH(날짜, 숫자) -> 숫자만큼 더함
  • MONTH_BETWEEN(날짜, 날짜) -> 두 날짜간의 개월 수 차이를 구함
  • NEXT_DAY(날짜, 요일) -> 입력한 요일에서 돌아오는 요일의 날짜를 출력
  • LAST_DAY(날짜) -> 해당 달의 마지막 날짜를 반환
  • ROUND( )
    • 숫자, 위치
    • 날짜, 기준
  • TRUNC( )
    • 숫자, 위치
    • 날짜, 기준

 

형 변환 함수

  • TO_CHAR(날짜, '포맷형태', [NLS_DATE_LANGUAGE='])
    • 날짜를 문자열로 포맷형태를 변경
    • language 설정시 해당 언어에 맞게 출력됨(7월, JULY, 07 ...)
  • TO_DATE(문자, '포맷형태')

 

조건함수

  • DECODE( )
SELECT EMPNO, ENAME, JOB, SAL,
	DECODE(JOB,
		'MANAGER', SAL*1.1,
		'SALESMAN', SAL*1.05,
		'ANALYST', SAL,
		SAL*1.03) AS UPSAL
FROM EMP;

  • CASE( )
SELECT EMPNO, ENAME, JOB, SAL,
	CASE JOB
	WHEN 'MANAGER' THEN SAL*1.1
	WHEN 'SALESMAN' THEN SAL*1.05
	WHEN 'ANALYST' THEN SAL
	ELSE SAL*1.03
	END AS UPSAL
FROM EMP;

SELECT EMPNO, ENANE, COMM,
	CASE
	WHEN COMM IS NULL THEN'해당사항없음'
	WHEN COMM=0 THEN '수당없음'
	WHEN COMM>0 THEN '수당:' || COMM
END AS COMM_TEXT
FROM EMP;

728x90
반응형

댓글

💲 추천 글