Home 제1장 - 제6절: 함수
Post
Cancel

제1장 - 제6절: 함수

1. 함수

(여기선 vender에서 제공하는 함수인 내장 함수에 대해)

내장 함수는 아래와 같이 나뉨

  • 단일행 함수
  • 다중행 함수
    • 집계 함수
    • 그룹 함수
    • 윈도우 함수
      함수는 입력값이 아무리 많아도 출력은 하나만 된다는 특징 가짐.
        => M:1 관계
종류내용함수의 예
문자형
함수
문자 입력 시
문자나 숫자 값 반환
LOWER, UPPER, SUBSTR/SUBSTRING,
LENGTH/LEN, LTRIM, RTRIM, TRIM,
ASCII
숫자형
함수
숫자 입력 시
숫자 값 반환
ABS, MOD, ROUND/TRUNC,
SIGN/CHR/CHAR, CEIL/CEILING,
FLOOR, EXP, LOG, LN, POWER,
SIN, COS, TAN
날짜형
함수
DATE 타입의 값
반환
SYSDATE/GETDATE, EXTRACT/DATEPART,
TO_NUMBER(TO_CHAR(d,'YYYY'|'MM'|'DD'))/YEAR|MONTH|DAY
반환형
함수
문자, 숫자, 날짜형 값의
데이터 타입 변환
TO_NUMBER, TO_CHAR, TO_DATE/CAST,
CONVERT
NULL 관련
함수
NULL
처리하기 위한 함수
NVL/ISNULL, NULLIF, COALESCE,
SIGN/CHR

단일행 함수의 중요한 특징

  • SELECT, WHERE, ORDER BY 절에 사용 가능함.
  • 각 row들에 대해 개별적으로 작용하여 데이터 값들 조작하고,
     각각의 row에 대한 조작 결과를 리턴함.
  • 여러 인자argument를 입력해도
     단 하나의 결과만 리턴함.
  • 함수의 인자로 상수, 변수, 표현식 사용 가능함.
  • 하나의 인수 가질 수도, 여러 개의 인수를 가질 수도 있음.
  • 특별한 경우 아니면,
     함수의 인자로 함수 사용하는 함수의 중첩이 가능함.


2. 문자형 함수


문자형 함수함수 설명
LOWER(문자열)문자열의 알파벳 -> 소문자
UPPER(문자열)문자열의 알파벳 -> 대문자
ASCII(문자)문자나 숫자 -> ASCII 코드 번호
CHR/CHAR(ASCII번호)ASCII 코드 번호 -> 문자나 숫자
CONCAT
(문자열1, 문자열2)
SUBSTR/SUBSTRING
(문자열, m[, n ])
문자열 중 위치 m에서
n개의 문자 길이에 해당하는 문자 반환.
n 생략 시 마지막까지.
LENGTH/LEN(문자열)문자열 개수를 숫자값으로 반환
LTRIM
(문자열 [, 지정문자)
지정 문자 있을 시 해당 문자 제거
(생략 시, 공백 값이 디폴트)
(Server에선 공백만 제거가능)
RTRIM
(문자열 [, 지정문자)
문자열 마지막 문자부터 시작
TRIM
([leading|trailing|both]
지정문자 FROM 문자열)
머리말, 꼬리말 또는 양쪽의 지정 문자 제거
(Server에선 공백만 제거가능)
1
2
SELECT LENGTH('THIS IS SQL')
FROM DUAL;


cf) DUAL 테이블의 특성

  • 사용자 SYS가 소유함. 모든 사용자가 액세스 가능.
  • SELECT ~ FROM ~의 형식을 갖추기 위한 일종의 DUMMY 테이블.
  • DUMMY라는 문자열 유형 column에 'X'라는 값 있는 row를 1건 포함함.


1
SELECT LENGTH('THIS IS SQL') AS ColumnLength;


3. 숫자형 함수


문자형 함수함수 설명
ABS(숫자)절댓값 반환
SIGN(숫자)
MOD(숫자1, 숫자2)
CEIL/CEILING(숫자)
FLOOR(숫자, [, m ])
SIN, COS, TAN
EXP(), POWER(), SQRT(), LOG()


4. 날짜형 함수


문자형 함수함수 설명
SYSDATE/
GETDATE()
현재 날짜, 시각 출력
EXTRACT('YEAR'|'MONTH'|'DAY' from d)/
DATEPART('YEAR'|'MONTH'|'DAY', d)
년/월/일 데이터
시간/분/초도 가능.


1
SELECT SYSDATE() FROM DUAL;


5. 변환형 함수


특정 데이터 타입을 다양한 형식으로 출력.

크게

  • 명시적Explicit 데이터 유형 변환  : 데이터 변환형 함수로 데이터 유형을 변환하도록 명시
  • 암시적Implicit 데이터 유형 변환  : DB가 자동으로 데이터 유형 변환하여 계산
문자형 함수함수 설명
TO_NUMBER(문자열)alphanumeric 문자열을 숫자로 변환
TO_CHAR(숫자|날짜 [, FORMAT])
TO_DATE(숫자|날짜 [, FORMAT])
Orcale


6. CASE 표현


IF-THEN-ELSE 논리와 유사.
SQL의 비교 연산 기능 보완하는 역할.

1
2
3
4
IF  SAL > 2000
    THEN    REVISED_SALARY = SAL
    ELSE    REVISED_SALARY = 2000
END-IF;
CASE 표현함수 설명
CASE
    SIMPLE_CASE_EXPRESSION  조건
    ELSE 표현절
END
CASE
    SEARCHED_CASE_EXPRESSION  조건
    ELSE 표현절
END
DECODE(표현식, 기준값1, 값1,    
기준값2, 값2, ..., 디폴트값


CASE 표현은 함수 성질 가지므로,
다른 함수처럼 중첩 사용 가능.

1
2
3
4
5
6
7
8
9
SELECT  ENAME   SAL,
        CASE    WHEN    SAL >= 2000
                THEN    1000
                ELSE    (CASE WHEN  SAL >= 1000
                            THEN    500
                            ELSE    0
                        END)
        END as  BONUS
FROM    EMP;


7. NULL 관련 함수


7.1. NVL/ISNULL 함수

7.2. NULL과 공집합

7.3. NULLIF

7.4. 기타 NULL 관련 함수(COALESCE)


Contents