함수 (FUNCTION)

DONI·2021년 9월 25일
0

Oracle

목록 보기
2/22
post-thumbnail

🏹 함수 (Function)

  • 단일행 함수 (SINGLE ROW) : 컬럼에 기록된 N개의 값을 읽어 N개의 결과를 반환
    (입력 받은 행의 개수만큼 결과를 반환)

  • 그룹 함수 (GROUP) : 컬럼에 기록된 N개의 값을 읽어 1개의 결과를 반환
    (특정 행들의 집합으로 그룹이 형성되어 그룹 당 1개의 결과를 반환)

    함수가 적용될 수 있는 위치
    SELECT절, WHERE절, ORDER BY절, GROUP BY절, HAVING절


🏹 문자 처리 함수

  • INSTR : 지정한 위치부터 지정한 순번째로 검색되는 문자의 시작 위치를 반환
    INSTR('문자열' | 컬럼명, '검색 문자' [, 검색 시작 위치 [, 순번]])

    예) 4번 문자부터 검색해서 두 번째로 나오는 B 위치
    SELECT INSTR('AABAACAABBAA', 'B', 4, 2) FROM DUAL; → 10

  • TRIM : 주어진 컬럼이나 문자열의 앞, 뒤, 양쪽에 있는 지정된 문자를 제거
    (양쪽 공백 제거에 주로 사용)
    TRIM([LEADING | TRAILING | BOTH] '문자열' | 컬럼명 [FROM '문자열' | 컬럼명])

    예) 문자열 뒤쪽 '-' 문자 제거
    SELECT TRIM(TRAILING '-' FROM '---DONI---') FROM DUAL; → ---DONI

  • LPAD / RPAD : 주어진 컬럼이나 문자열에 임의의 문자열을 왼쪽 / 오른쪽에 덧붙여 반환
    LPAD | RPAD('문자열' | 컬럼명, 반환할 문자열 길이 [, 덧붙이려는 문자열])

    예) 주민등록번호 뒷자리 감추기
    SELECT RPAD(SUBSTR(EMP_NO, 1, 8), LENGTH(EMP_NO), '*') FROM EMPLOYEE;

  • INITCAP : 컬럼의 문자 혹은 문자열을 첫 글자만 대문자로 변경하여 반환


🏹 숫자 처리 함수

  • CEIL : 올림 (소수점 위치 지정 불가)

  • TRUNC : 버림

    내림 VS 버림
      - FLOOR : 음수일 경우 올림
      - TRUNC : 양수, 음수 관계 없이 소수점 절삭


🏹 날짜 처리 함수

  • MONTHS_BETWEEN : 두 날짜의 개월 수 차이를 반환

  • ADD_MONTHS : 날짜에 더해진 수만큼 개월을 추가하여 반환

  • EXTRACT : 년, 월, 일 정보를 추출하여 반환
    EXTRACT(YEAR | MONTH | DAY FROM 날짜)


🏹 형 변환 함수

  • TO_CHAR : 날짜 혹은 숫자형 데이터를 문자형 데이터로 변환하여 반환

    • 9 : 하나당 0 ~ 9 사이 숫자 한 칸, 숫자 없으면 빈칸, 오른쪽 정렬
      SELECT TO_CHAR(1234, '99999') FROM DUAL;

    • L : 현재 시스템상에 설정된 나라의 화폐 기호
      SELECT TO_CHAR(1000000, 'L9999999') FROM DUAL; → ₩1000000

  • TO_DATE : 숫자 혹은 문자형 데이터를 날짜형 데이터로 변환하여 반환

    연도 표기 포맷 R, Y
      - Y : 현재 세기 (21세기 == 2000년대)
      - R : 변환하는 숫자가 50 이상이면 이전 세기 (1900)
             변환하는 숫자가 50 미만이면 현재 세기 (2000)
    SELECT TO_DATE('990915', 'YYMMDD') FROM DUAL; → 2099-09-15 00:00:00
    SELECT TO_DATE('990915', 'RRMMDD') FROM DUAL; → 1999-09-15 00:00:00


🏹 선택 함수

계산식 또는 컬럼의 값이 조건과 같으면 해당 값을 반환

  • DECODE (자바의 switch문과 비슷함)
    DECODE(계산식 | 컬럼명, 조건1, 값1, 조건2, 값2, ... 아무것도 아닐 경우의 값)

  • CASE (자바의 if - else if - else문과 비슷함)
    CASE WHEN 조건식 THEN 결과값 ELSE 결과값 END


🚩 소스코드

  • EMPLOYEE 테이블에서 이름, 성별(남, 여) 조회
SELECT EMP_NAME,
    CASE
        WHEN SUBSTR(EMP_NO, 8, 1) IN ('1', '3') THEN '남'
        WHEN SUBSTR(EMP_NO, 8, 1) IN ('2', '4') THEN '여'
    END 성별
FROM EMPLOYEE;
profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글