• [SQLD] 함수

    2025. 2. 21.

    by. hyunji1109

    정의

    • input value가 있을 경우 그에 맞는 output value 를 출력해주는 객체
    • input value와 output value의 관계를 정의한 객체
    • from 절을 제외한 모든 절에서 사용 가능

     

    기능

    • 기본적인 쿼리문을 더욱 강력하게 해줌
    • 데이터의 계산을 수행
    • 개별 데이터의 항목을 수정
    • 표시할 날짜 및 숫자 형식 지정
    • 열 데이터의 유형을 변환

     

    입력값의 수에 따른 함수 분류

    단일행 함수와 복수행 함수로 구분

    • 단일행 함수
      • input과 output의 관계가 1:1
      • 하나의 input이 들어가서 하나의 output이 나옴
    • 복수행 함수
      • 여러 건의 데이터를 동시에 입력 받아서 하나의 요약값을 리턴
      • 그룹함수 또는 집계함수라고도 함
      • sum, min, max

     

     

     

    입/출력값의 타입에 따른 함수 분류

    1) 문자형 함수

    • 문자열 결합, 추출, 삭제 등을 수행
    • 단일행 함수 형태
    • output은 대부분 문자값(LENGTH, INSTR 제외)

     

    SQL-Server)

    • SUBSTR -> SUBSTRING
    • LENGTH -> LEN
    • INSTR -> CHARINDEX

     

     

    2) 숫자형 함수

    • 숫자를 입력하면 숫자 값을 반환
    • 단일행 함수 형태의 숫자함수
    • ORACLE과 SQL-Server 함수 거의 동일

     

     

     

    3) 날짜형 함수

    • 날짜 연산과 관련된 함수
    • ORACLE과 SQL-Server 함수 거의 다름

     

    SQL-Server)

    • SYSDATE -> GETDATE
    • ADD_MONTHS -> DATEADD (월 뿐만 아니라 모든 단위 날짜 연산 가능)
    • MONTHS_BETWEEN -> DATEDIFF (두 날짜 사이의 년, 월, 일 추출)

     

     

    4) 변환함수

    • 값의 데이터 타입을 변환
    • 문자를 숫자로, 숫자를 문자로, 날짜를 문자로 변경

     

    SQL-Server)

    • TO_NUMBER, TO_DATE, TO_CHAR -> CONVERT(포맷 전달 시)
    • 단순 변환일 경우 주로 CAST 사용

     

     

    5) 그룹함수

    • 다중행 함수
    • 여러 값이 input값으로 들어가서 하나의 요약된 값으로 리턴
    • group by와 함께 자주 사용됨
    • ORACLE과 SQL-server 거의 동일

     

    SQL-server)

    • VARIANCE -> VAR
    • STDDEV -> STDEV

     

     

    6) 일반함수

    • 기타 함수(널 치환 함수 등)

     

     

     

    DECODE 사용 예제1

    👉부서번호가 10번이면 인사부, 20번이면 재무부, 나머지는 널 리턴

     

     

    DECODE 사용 예제2

    👉 DEPTNO가 10이면서 JOB이 CLERK이면 A, CLERK 아니면 B, DEPTNO가 10이 아니면 C

     

     

    NVL,NVL2 사용 예제

    👉 NVL2의 경우 NVL이랑 다르게 COMM의 값이 널이 아닐 때도 치환값 정의 가능
    👉 NVL2의 경우 COMM이 널이 아니면 10% 인상값, 널이면 500 리턴

     

     

    COALESCE 사용 예제

    👉 DEPTNO1과 DEPTNO2중 널 아닌값 출력 (둘 다 널이 아니면 맨 앞 순서대로 출력).
    👉 모두 널이면 0 출력

     

     

    CASE문 사용 예제1

    👉 CASE문을 사용하여 여러 조건(대소비교 가능)에 대한 치환 및 연산 가능!

     

     

    CASE문 사용 예제2


    👉동등비교 시 위처럼 비교대상(DEPTNO)를 CASE와 WHEN 사이에 배치하면서 WHEN절 마다 반복하지 않아도 됨(이 때 DEPTNO. 데이터 타입과 WHEN절의 명시된 비교대상의 데이터타입 반드시 일치해야 함)

    'CS > SQL' 카테고리의 다른 글

    [SQLD] GROUP BY절, HAVING절  (0) 2025.02.22
    [SQLD] WHERE절  (0) 2025.02.22
    [SQLD] SELECT문  (0) 2025.02.20
    [SQLD] 관계형 데이터베이스  (0) 2025.02.19
    [SQLD] 본식별자 vs 인조식별자  (0) 2025.02.18

    댓글