반응형

단일행 함수

  • 한 번에 한 로우씩 처리하여  한 로우에 결과를 변경하는 함수이다.
  • 단일행 함수는 SELECT, WHERE, ORDER BY, UPDATE의 SET 절에서 사용 가능하다.
  • 단일행 함수는 1:M 조인이어도 M쪽에서 출력된 행이 하나씩 단일행 함수의 입력값으로 사용되므로 사용가 가능하다.
  • 단일행 함수는 입력되는 값에 따라 문자 함수, 숫자 함수, 날짜 함수, 변환 함수, 일반 함수로 구분된다.

 

문자 함수

UPPER(컬럼)

  • 모든 문자를 대문자로 변경(UPPER)

LOWER(컬럼)

  • 모든 문자를 소문자로 변경(LOWER)

INITCAP(컬럼)

  • 첫(INIT) 글자는 대문자(CAP), 나머지는 소문자로 변경

 

 

LPAD(컬럼, 자릿수, '빈자리를 채울 문자')

  • 두 번째 인자인 자리 수만큼 문자열의 부족한 자리를 왼쪽(L)에서부터 세 번째 인자로 채운다(PAD).

RPAD(컬럼, 자릿수, '빈자리를 채울 문자')

  • 두 번째 인자인 자리 수만큼 문자열의 부족한 자리를 오른쪽(R)에서부터 세 번째 인자로 채운다(PAD).

 

 

LTRIM(컬럼, '제거할 문자열')

  • 문자열의 왼쪽(L)에 두 번째 인자인 제거할 문자열이 존재하면 제거(TRIM)한다. '제거할 문자'는 옵션으로 디폴트 값은 공백이다.
  • '제거할 문자'를 동일한 값으로 여러 개 입력하여도 한 문자로 판단한다.
  • 예를 들어 LTRIM(컬럼, '0') 이나 LTRIM(컬럼 '0000000')이나 동일하다.

RTRIM(컬럼, '제거할 문자열')

  • 문자열의 오른쪽(R)에 두 번째 인자인 제거할 문자열이 존재하면 제거(TRIM)한다. 나머지 특징은 LTRIM과 동일하다.

TRIM( [BOTH | LEADING | TRAILING] '제거할 문자' FROM '문자열')

  • 문자열의 양쪽(BOTH), 앞쪽(LEADING) 또는 뒤쪽(TRAILING)에 제거할 문자가 존재하면 제거(TRIM)한다.
  • 문자열만 입력한다면 양쪽의 공백을 제거한다.
  • BOTH, LEADING, TRAILING 셋 중 아무것도 입력하지 않는다면, 디폴트 값은 BOTH이다.
  • '제거할 문자'는 '문자열'이 아니고 '문자'이다. 즉 char 하나만 입력받는다. 문자열을 입력하게 되면 에러가 발생한다.

 

 

SUBSTR(컬럼, 시작 위치, 길이)

  • 문자열에서 두 번째 인자인 시작 위치에서 세 번째 인자인 길이만큼 문자열을 잘라낼 때(SUBSTR) 사용하는 함수이다.
  • 시작 위치의 인덱스는 1부터 시작한다.
  • 시작 위치는 음수도 될 수 있다. 시작 위치가 -1이라면 맨 끝 문자가 시작 위치이다. 그리고 스캔하는 방향을 항상 오른쪽으로 한다. 아래 설명할 INSTR 함수랑 다르다.

INSTR(컬럼, 찾는 글자, 시작 위치, 횟수)

  • 문자열에서 특정 문자의 위치를 찾을 때(INSTR) 사용하는 함수이다. 찾을 때의 시작 위치를 입력받으며, 몇 번째로 해당 글자를 만났을 때 위치를 반환할지도 입력받는다.
  • 시작 위치와 횟수는 입력을 받지 않을 경우, 각각 디폴트 값은 1, 1이다.
  • 찾는 문자가 없으면 0을 반환한다.
  • 시작 위치는 음수도 될 수 있다. 시작 위치가 -1이라면 맨 끝 문자가 시작 위치이다. 그리고 스캔하는 방향은 항상 왼쪽이다. 위에 설명한 SUBSTR 함수랑 다르다.

REPLACE(컬럼, '찾을 문자' '변환 문자')

  • 문자열에서 특정 문자를 찾아 변환한다(REPLACE).

 

숫자 함수

ABS(숫자)

  • 절댓값을 구한다.

MOD(숫자, 나눌숫자)

  • 나머지를 구한다. 숫자 % 나눌숫자

SIGN(숫자)

  • 양수이면 1, 음수이면 -1, 0이면 0을 반환하는 함수이다.

 

 

ROUND(숫자, 자릿수)

  • 반올림한다.
  • 자릿수는 음수도 입력할 수 있다. 음수를 입력하면 소수점이 아닌 정수형 자릿수를 나타낸다.

TRUNC(숫자, 자릿수)

  • 내림한다.
  • 자릿수는 음수도 입력할 수 있다. 음수를 입력하면 소수점이 아닌 정수형 자릿수를 나타낸다.

CEIL(숫자)

  • 주어진 숫자와 가장 가까우면서 큰 정수를 구한다.
  • 소수점을 다 지우고 +1 하면 된다.

FLOOR(숫자)

  • 주어진 숫자와 가장 가까우면서 작은 정수를 구한다.
  • 소수점을 다 지우면 된다.

 

 

POWER(숫자, 승)

  • 숫자^승 값을 반환한다.

EXP(숫자)

  • e^숫자 값을 반환한다.

 

 

LOG(밑, 진수)

  • 로그를 구한다.

LN(진수)

  • 밑이 e인 로그를 구한다.

 

 

SIN(라디안), COS(라디안), TAN라디안)

  • 삼각함수를 구한다.

 

 

CHR(숫자)

  • 숫자와 대응되는 아스키코드의 문자를 반환한다.

 

 

날짜 함수

SYSDATE

  • 현재의 날짜와 시간을 출력하는 함수이다.

 

 

EXTRACT( [YEAR | MONTH | DAY | HOUR | MINUTE | SECOND] FROM 날짜 )

  • 입력된 날짜에서 추출하고자 하는 정보를 반환하는 함수
  • 변환 함수에서 설명할 TO_CHAR와 비슷하다.

 

 

ADD_MONTHS(날짜, 더할 숫자)

  • 입력된 날짜에 숫자만큼의 달을 더하는 함수이다.

MONTHS_BETWEEN(날짜1, 날짜2)

  • 두 날짜 사이의 개월 수를 출력하는 함수이다.
  • 날짜 1이 더 커야지 결과 값은 양수로 표현된다.

 

변환 함수

TO_CHAR(숫자 또는 날짜, 형식)

  • 숫자 또는 날짜의 값을 원하는 형식의 문자열로 변환하는 함수이다.
  • 9는 자리를 차지한다는 의미이다.
    TO_CHAR(1234,'99999') -- ' 1234'
    TO_CHAR(1234,'9999.99') -- '1234.00'​
  • 0은 해당 자리가 비어있다면 0으로 표현하라는 의미이다.
  • TO_CHAR(1234,'09999') -- '01234'​​
  • 날짜 함수인 EXTRACT(YEAR FROM SYSDATE)는 아래와 동일하다.
    TO_CHAR(SYSDATE, YYYY)​

 

 

TO_NUMBER(문자)

  • 문자를 숫자로 변환하는 함수이다.
  • 숫자로 변환할 수 없을 경우 에러가 발생한다.

 

 

TO_DATE(문자, 날짜 형식)

  • 문자를 날짜로 변환하는 함수이다.
  • 날짜 형식을 입력하지 않으면 입력받은 날짜 문자 형식대로 변환된다.

 

 

CAST(변환 대상 AS 데이터 타입)

  • 변환 대상을 특정한 데이터 타입으로 변환하는 함수이다.

 

 

일반 함수

NVL(컬럼, 변환 값)

  • 첫 번째 인자의 값이 NULL일 경우, 두 번째 값으로 표현한다.

NULLIF(표현식1, 표현식2)

  • 첫 번째 인자와 두 번째 인자의 값이 같다면 NULL을 반환한다. 만약 다르다면 첫 번째 인자를 반환한다.

COALESCE(표현식1, 표현식2, ... , 표현식N)

  • 입력받은 인자를 앞에서부터 확인하면서 NULL이 아니라면 해당 인자를 반환한다. 만약 모두 NULL이라면 NULL을 반환한다.

 

 

DECODE(표현식, 비교대상1, 반환값1, 비교대상2, 반환값2, ... , 비교대상N, 반환값N, 디폴트 값)

  • 첫 번째 인자를 앞에서부터 비교대상과 비교하고 같다면 해당 반환 값을 반환한다. 만약 모든 비교대상과 다르다면 맨 마지막 인자인 디폴트 값을 반환한다.
  • 디폴트 값은 입력하지 않으면 NULL이다.

 

 

CASE 표현식

      WHEN 비교대상(조건문)1 THEN 반환값1

      WHEN 비교대상(조건문)2 THEN 반환값2

                    ....

      WHEN 비교대상(조건문)N THEN 반환값N

      ELSE 디폴트값

END

  • 표현식을 앞에서부터 비교대상과 비교하고 같다면 해당 반환 값을 반환한다. 만약 모든 비교대상과 다르다면 맨 마지막 인자인 디폴트 값을 반환한다.
  • 비교 값만 입력할 경우 DECODE와 동일하게 동작한다.
  • BETWEEN 10 AND 20과 같이 조건문을 입력할 수도 있다.

 

반응형

+ Recent posts