PL/SQL (8) – Oracle 내장 함수

  • by

​​

1. Oracle 내장 함수

– 오라클이 제공하는 함수가 있기 때문에 이것을 사용하여 불필요한 번거로움을 줄일 수 있습니다.

– 프로그래밍 언어의 명령, 함수, 구문, 사용법 등을 알고 이러한 강력한 기능을 사용하는 능력도 있습니다.

– 종류: 문자, 숫자, 날짜, 변환, 세트, ​​기타 함수

– 결과를 확인하려면 DUAL table을 사용합니다.

​​

SQL 함수

SQL 함수는 Oracle Database에 내장되어 있으며 다양한 적절한 SQL 문에서 사용할 수 있습니다.

SQL 기능과 PL/SQL에 기록된 사용자 정의 기능을 혼동하지 마십시오.

SQL 함수가 기대하는 데이터 유형이 아닌 데이터 유형 인수로 SQL 함수를 호출하는 경우 Oracle은 SQL 함수를 실행하기 전에 인수를 예상 데이터 유형으로 변환하려고 시도합니다.

null 인수로 SQL 함수를 호출하면 SQL 함수는 자동으로 null을 반환합니다.

이 동작을 따르지 않는 SQL 함수는 CONCAT, NVL, REPLACE 및 REGEXP_REPLACE뿐입니다.

​​

​​

단일 행 함수

단일 행 함수는 조회된 테이블 또는 뷰의 각 행에 대해 단일 결과 행을 리턴합니다.

이러한 기능은 선택 목록, Where 절, Start With, Connection By 절 및 HAVING 절에 표시될 수 있습니다.

​​

​​

숫자 함수

숫자 함수는 숫자 입력을 받아들이고 숫자를 반환합니다.

소수점 38자리까지 정확한 NUMBER 값을 반환하는 대부분의 숫자 함수입니다.

초월 함수 COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, TANH는 소수점 36자리까지 정확합니다.

초월 함수 ACOS, ASIN, ATAAN, ATAN2는 소수점 30자리까지 정확합니다.

​​

숫자 함수는 다음과 같습니다.

ABS

ACOS

ASIN

ATAN

ATAN2

BITAND

CEIL

COS

COSH

EXP

FLOOR

LN

LOG

MOD

NANVL

POWER

REMAINDER

ROUND(number)

SIGN

SIN

SINH

SQRT

TAN

TANH

TRUNC(number)

WIDTH_BUCKET

​​

​​

문자를 반환하는 문자 함수

문자 값을 반환하는 문자 함수는 달리 문서화되어 있지 않으면 다음 데이터 형식의 값을 반환합니다.

  • 입력 인수가 CHAR 또는 VARCHAR2이면 리턴되는 값은 VARCHAR2입니다.

  • 입력 인수가 NCHAR 또는 NVARCHAR2이면 리턴되는 값은 NVARCHAR2입니다.

​​

함수가 반환하는 값의 길이는 반환되는 데이터 형식의 최대 길이로 제한됩니다.

  • CHAR 또는 VARCHAR2를 리턴하는 기능의 경우, 리턴 값의 길이가 한계를 초과하면 Oracle Database는 CHAR을 자르고 오류 메시지없이 결과를 리턴합니다.

  • CLOB 값을 리턴하는 기능의 경우, 리턴 값의 길이가 한계를 초과하면 Oracle은 오류를 발생시키고 데이터를 리턴하지 않습니다.

문자 값을 반환하는 문자 함수는 다음과 같습니다.

CHR

CONCAT

INITCAP

LOWER

LPAD

LTRIM

NLS_INITCAP

NLS_LOWER

NLSSORT

NLS_UPPER

REGEXP_REPLACE

REGEXP_SUBSTR

REPLACE

RPAD

RTRIM

SOUNDEX

SUBSTR

TRANSLATE

TREAT

TRIM

UPPER

​​

​​

NLS 문자 함수

NLS 문자 함수는 문자 세트에 대한 정보를 리턴합니다.

NLS 문자 함수:

​​

NLS_CHARSET_DECL_LEN

NLS_CHARSET_ID

NLS_CHARSET_NAME

​​

숫자를 반환하는 문자 함수

숫자를 반환하는 문자 기능은 모든 문자 데이터 형식을 인수할 수 있습니다.

​​

숫자를 반환하는 문자 함수는 다음과 같습니다.

ASCII

INSTR

LENGTH

REGEXP_INSTR

Datetime 함수

Datetime 함수는 날짜(날짜), 타임스탬프(TIMESTAMP, TIME ZONE, TIMESTAMP(Local Time ZONE 포함), 간격(INTERVAL Day TO SECOND, Interval YEAR to MONTH) 값에 따라 작동합니다.

​​

데이터 시간 기능의 일부는 Oracle DATE 데이터 유형(ADD_MONTHS, CURRENT_DATE, LAST_DAY, NEW_TIME 및 NEXT_DAY)용으로 설계되었습니다.

타임 스탬프 값을 인수로 지정하면 Oracle Database는 내부적으로 입력 유형을 DATE 값으로 변환하고 DATE 값을 반환합니다.

예외는 숫자를 반환하는 MONTHS_BETWEEN 기능과 타임스탬프와 구간 값을 전혀 받아들이지 않는 ROUND 및 TRUNC 기능입니다.

​​

나머지 데이터 시간 기능은 세 가지 유형의 데이터(날짜, 타임스탬프 및 간격) 중 하나를 수락하고 이 유형의 값을 리턴하도록 설계되었습니다.

​​

datetime 함수는 다음과 같습니다.

​​

ADD_MONTHS

CURRENT_DATE

CURRENT_TIMESTAMP

DBTIMEZONE

EXTRACT(datetime)

FROM_TZ

LAST_DAY

LOCALTIMESTAMP

MONTHS_BETWEEN

NEW_TIME

NEXT_DAY

NUMTODSINTERVAL

NUMTOYMINTERVAL

ROUND(date)

SESSIONTIMEZONE

SYS_EXTRACT_UTC

SYSDATE

SYSTIMESTAMP

TO_CHAR(datetime)

TO_TIMESTAMP

TO_TIMESTAMP_TZ

TO_DSINTERVAL

TO_YMINTERVAL

TRUNC(date)

TZ_OFFSET

​​

일반 비교 함수

일반 비교 함수는 값 세트의 최대값과 최소값을 결정합니다.

​​

일반적인 비교 함수는 다음과 같습니다.

​​

GREATEST

LEAST

변환 함수

변환 함수는 값을 한 데이터 형식에서 다른 데이터 형식으로 변환합니다.

일반적으로 함수 이름의 형식은 데이터 형식에서 데이터 형식까지의 관례를 따릅니다.

첫 번째 데이터 형식은 입력 데이터 형식입니다.

두 번째 데이터 유형은 출력 데이터 유형입니다.

​​

SQL 변환 함수는 다음과 같습니다.

​​

ASCIISTR

BIN_TO_NUM

CAST

CHARTOROWID

COMPOSE

CONVERT

DECOMPOSE

HEXTORAW

NUMTODSINTERVAL

NUMTOYMINTERVAL

RAWTOHEX

RAWTONHEX

ROWIDTOCHAR

ROWIDTONCHAR

SCN_TO_TIMESTAMP

TIMESTAMP_TO_SCN

TO_BINARY_DOUBLE

TO_BINARY_FLOAT

TO_CHAR(character)

TO_CHAR(datetime)

TO_CHAR(번호)

TO_CLOB

TO_DATE

TO_DSINTERVAL

TO_LOB

TO_MULTI_BYTE

TO_NCHAR(character)

TO_NCHAR(datetime)

TO_NCHAR(번호)

TO_NCLOB

TO_NUMBER

TO_DSINTERVAL

TO_SINGLE_BYTE

TO_TIMESTAMP

TO_TIMESTAMP_TZ

TO_YMINTERVAL

TO_YMINTERVAL

TRANSLATE … USING

UNISTR

큰 객체 함수

큰 오브젝트 함수는 LOB에서 작동합니다.

​​

큰 객체 함수는 다음과 같습니다.

BFILENAME

EMPTY_BLOB

EMPTY_CLOB

​​

컬렉션 함수

Collection 함수는 중첩된 테이블과 배선에서 작동합니다.

​​

SQL Collection 함수는 다음과 같습니다.

CARDINALITY

COLLECT

POWERMULTISET

POWERMULTISET_BY_CARDINALITY

SET

​​

계층 함수

계층 함수는 결과 세트에 계층 경로 정보를 적용합니다.

​​

SYS_CONNECT_BY_PATH

​​

데이터 마이닝 함수

데이터 마이닝 함수는 DBMS_DATA_MININING 패키지 또는 Oracle Data Mining Java API를 사용하여 빌드된 모델에서 작동합니다.

​​

SQL 데이터 마이닝 함수는 다음과 같습니다.

CLUSTER_ID

CLUSTER_PROBABILITY

CLUSTER_SET

FEATURE_ID

FEATURE_SET

FEATURE_VALUE

PREDICTION

PREDICTION_COST

PREDICTION_DETAILS

PREDICTION_PROBABILITY

PREDICTION_SET

XML 함수

XML 함수는 XML 문서 또는 조각으로 기능하거나 반환합니다.

출력 형식에 대한 정보와 같은 이러한 기능을 사용하여 XML 데이터를 선택하고 쿼리하는 방법에 대한 자세한 내용은 Oracle XML DB 개발자 안내서를 참조하십시오.

​​

SQL XML 함수:

​​

APPENDCHILDXML

DELETEXML

DEPTH

EXTRACT(XML)

EXISTSNODE

EXTRACTVALUE

INSERTCHILDXML

INSERTXMLBEFORE

PATH

SYS_DBURIGEN

SYS_XMLAGG

SYS_XMLGEN

UPDATEXML

XMLAGG

XMLCDATA

XMLCOLATTVAL

XMLCOMMENT

XMLCONCAT

XMLFOREST

XMLPARSE

XMLPI

XMLQUERY

XMLROOT

XMLSEQUENCE

XMLSERIALIZE

XMLTABLE

XMLTRANSFORM

인코딩 및 디코딩 기능

인코딩 및 디코딩 기능을 사용하여 데이터베이스의 데이터를 검사하고 디코딩할 수 있습니다.

​​

DECODE

DUMP

ORA_HASH

VSIZE

​​

NULL 관련 함수

NULL 관련 함수는 null 처리를 용이하게 합니다.

NULL 관련 함수는 다음과 같습니다.

​​

COALESCE

LNNVL

NULLIF

NVL

NVL2

환경 및 식별자 함수

환경 및 식별자 함수는 인스턴스 및 세션에 대한 정보를 제공합니다.

이러한 함수는 다음과 같습니다.

​​

SYS_CONTEXT

SYS_GUID

SYS_TYPEID

UID

USER

USERENV

집계 함수

집계 함수는 단일 행이 아닌 행 그룹을 기반으로 단일 결과 행을 반환합니다.

집계 함수는 선택 목록과 ORDER BY 및 HAVING 절에 표시될 수 있습니다.

Oracle Database는 SELECT 문의 GROUP BY 절에서 일반적으로 사용됩니다.

Oracle Database는 조회된 테이블 또는 뷰의 행을 그룹으로 분할합니다.

GROUP BY 절을 포함하는 쿼리 선택 목록의 요소는 집계 함수, GROUP BY 식, 상수 또는 이 중 하나를 포함하는 식일 수 있습니다.

Oracle은 각 행 그룹에 집계 기능을 적용하고 각 그룹에 대해 단일 결과 행을 반환합니다.

​​

GROUP BY 절을 생략하면 Oracle은 선택 목록의 집계 함수를 조회된 테이블 또는 뷰의 모든 행에 적용합니다.

HAVING 절의 Aggregate 함수를 사용하여 조회된 테이블이나 뷰의 개별 행 값이 아닌 집계 함수의 결과를 기반으로 출력에서 ​​그룹을 제거합니다.

​​

GROUP BY 절 사용: 쿼리 및 하위 쿼리의 GROUP BY 및 HAVING 절에 대한 자세한 내용은 예제 및 HAVING 절을 참조하십시오.

단일 인수를 사용하는 많은 (전부는 아니지만) 집계 함수는 다음 조건을 수락합니다.

​​

DISTINCT는 집계 함수가 인수 표현식의 구별된 값만 고려하도록 합니다.

ALL은 Aggregate 함수가 모든 중복 값을 포함한 모든 값을 고려합니다.

​​

예를 들어, DISTINCT 평균 1, 1, 3은 2이다.

평균은 1.5입니다.

둘 다 지정하지 않으면 기본값은 ALL입니다.

​​

COUNT

그리고 GROUPING을 제외한 모든 Aggregate 함수는 null을 무시합니다.

aggregate 함수 인수의 NVL 함수를 사용하여 null 값을 바꿀 수 있습니다.

COUNT는 null을 반환하지 않지만 숫자 또는 0을 반환합니다.

나머지 모든 Aggregate 함수의 데이터 세트에 행이 없거나 Aggregate 함수에 대한 인수로 null 행만 포함되어 있으면 함수는 null을 반환합니다.

​​

KEEP 키워드 다음에 MIN, MAX, SUM, AVG, COUNT, VARIANCE, STDDEV와 같은 Aggregate 함수를 FIRST 또는 LAST 함수와 함께 사용하여 지정된 정렬 사양에 대해 FIRST 또는 LAST로 분류되는 행 세트 에서 일련의 값으로 작동할 수 있습니다.

자세한 내용은 FIRST를 참조하십시오.

​​

Aggregate 기능을 포함할 수 있습니다.

예를 들어, 다음 예는 샘플 스키마 hr의 모든 부서에 대한 최대 급여의 평균을 계산합니다.

​​

직원으로부터 선택 BY 부서_id;

​​

AVG(MAX(SALARY))

—————-

10925

​​

이 계산은 GROUP BY 절(부서_id)에 의해 정의된 각 그룹의 내부 집계(MAX(급여))를 평가하여 결과를 다시 집계합니다.

​​

집계 함수는 다음과 같습니다.

AVG

COLLECT

CORR

CORR_*

COUNT

COVAR_POP

COVAR_SAMP

CUME_DIST

DENSE_RANK

FIRST

GROUP_ID

GROUPING

GROUPING_ID

LAST

MAX

MEDIAN

MIN

PERCENTILE_CONT

PERCENTILE_DISC

PERCENT_RANK

RANK

REGR_(Linear Regression) Functions

STATS_BINOMIAL_TEST

STATS_CROSSTAB

STATS_F_TEST

STATS_KS_TEST

STATS_MODE

STATS_MW_TEST

STATS_ONE_WAY_ANOVA

STATS_T_TEST_*

STATS_WSR_TEST

STDDEV

STDDEV_POP

STDDEV_SAMP

SUM

VAR_POP

VAR_SAMP

VARIANCE

분석 함수

​​

분석 함수는 행 세트를 기반으로 집계 값을 계산합니다.

각 그룹에 대해 여러 행을 반환한다는 점에서 집계 함수와 다릅니다.

행 그룹을 창이라고 하며 분석_clause에 의해 정의됩니다.

각 행에 대해 행의 슬라이드 창이 정의됩니다.

창은 현재 행 계산을 수행하는 데 사용되는 행 범위를 결정합니다.

윈도우 크기는 행의 물리적 개수 및 시간과 같은 논리 간격에 기초할 수 있다.

​​

분석 함수는 마지막 ORDER BY 절을 제외하고 쿼리에서 실행되는 마지막 작업 집합입니다.

분석 기능을 처리하기 전에 모든 조인과 모든 위치, GROUP BY 및 HAVING 절이 완료됩니다.

따라서 분석 기능은 선택 목록 또는 ORDER BY 절에만 표시할 수 있습니다.

​​

분석 함수는 일반적으로 누적, 이동, 중심 및 보고 집계를 계산하는 데 사용됩니다.

AVG*

CORR*

COVAR_POP*

COVAR_SAMP*

COUNT*

CUME_DIST

DENSE_RANK

FIRST

FIRST_VALUE*

LAG

LAST

LAST_VALUE*

LEAD

MAX*

MIN*

NTILE

PERCENT_RANK

PERCENTILE_CONT

PERCENTILE_DISC

RANK

RATIO_TO_REPORT

REGR_(Linear Regression) Functions*

ROW_NUMBER

STDDEV*

STDDEV_POP*

STDDEV_SAMP*

SUM*

VAR_POP*

VAR_SAMP*

VARIANCE*