ORACLE SQL Functions

Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SQL Functions

1. 수치함수
2. 문자값을 반환하는 문자 함수
3. NLS 문자 함수
4. 수치값을 반환하는 문자함수
5. 일시 함수
6. 일반적인 비교 함수
7. 변환 함수
8. LARGE OBJECT(LOB) 함수
9. 수집 함수
10. 계층 함수
11. XML 함수
12. 인코딩 함수와 디코딩 함수
13. NULL 함수
14. 환경 함수 와 식별자 함수
15. 집계 함수
16. 분석 함수
17. Object 참조 함수
18. 모델 함수
19. 기타 단일행 함수

단 일행 함수

단일행 함수는 쿼리 테이블 또는 뷰의 모든 행에 대하여 단일 결과 행을 반환한다. 이 함수는 select lists,where 구문,START WITH, CONNECT BY 구문, HAVING구문을 지정할수 있다.

1. 수치함수

처음메뉴로

함수명 | 설명
002.ABS | 절대값을 반환한다.
003.ACOS | n의 역코사인(arc cosine)값을 반환한다.
007.ASIN | n의 역사인(arc sine)값을 반환한다.
008.ATAN | n의 역탄젠트(arc tangent)값을 반환한다.
009.ATAN2 | ATAN2(n,m)은 atan2(n/m)과 같으며, n/m의 역탄젠트(arc tangent)값을 반환한다.
013.BITAND | 인수1과 인수2의 비트에 대한 AND연산을 수행하여 정수를 반환한다.
016.CEIL | 인수에서 지정한 수치를 올림하여 정수를 구하는 함수이다.
026.COS | n(라디안으로 표현되는 각도)의 코사인값을 반환한다.
027.COSH | n(라디안으로 표현되는 각도)의 쌍곡 코사인값(hyperbolic cosine)을 반환한다
044.EXP | e의 n 제곱 값을 반환한다.
050.FLOOR | 지정한 숫자보다 작거나 같은 정수 중에서 최대값을 반환한다
067.LN | 입력값의 자연 로그 값을 반환한다.
070.LOG | LOG(m,n)에서 밑을 m으로 한 n의 로그 값을 반환.
078.MOD | n2을 n1으로 나눈 나머지값을 반환.
080.NANVL | 입력 값 n2가 Nan(숫치가 아닌)라면, 대체 값 n1을 반환. n2가 NaN이 아니라면, n2를 반환
102.POWER | n2의 n1승 값을 반환.
118.REMAINDER | n2를 n1으로 나눈 나머지를 반환
120.ROUND (number) | n값을 소수점 이하를 integer를 기준으로 반올림하여 반환한다
130.SIGN | n의 부호를 반환.
131.SIN | n의 사인(sine)값을 반환.
132.SINH | n의 쌍곡선 사인(hyperbolic sine)을 반환.
134.SQRT | n의 제곱근을 반환.
159.TAN | n의 사인(tangent)값을 반환.
160.TANH | n의 쌍곡선 탄젠트(hyperbolic tangent)을 반환.
185.TRUNC (number) | 인수 n1을 소수점 자리 파라미터 n2 이하를 절삭.
199.WIDTH_BUCKET | 동일한 넓이를 갖는 히스토그램을 생성.

2. 문자값을 반환하는 문자 함수

처음메뉴로

함수명 | 설명
018.CHR | 10진수 n 에 대응하는 아스키코드를 반환.
022.CONCAT | char1과 char2를 연결하여 반환한다
057.INITCAP | 입력 문자열 중에서 각 단어의 첫 글자를 대문자로 나머지는 소문자로 변환하여 반환한다
071.LOWER | 입력된 문자열을 소문자로 변환한다
072.LPAD | 지정된 자리수 n으로부터 expr1을 채우고,왼편의 남은 공간에 expr1을 채운다.
073.LTRIM | 문자열 char 좌측으로부터 set으로 지정된 모든 문자를 제거한다.
081.NCHR | 유니코드 문자를 반환.
087.NLS_INITCAP | 각 단어의 처음 문자를 대문자로, 나머지 문자를 소문자로 변환하여 char를 반환한다
088.NLS_LOWER | 모든 문자를 소문자로 변환하여 반환한다.
089.NLSSORT | 입력 문자열을 소팅하여 스트링을 반환한다.
090.NLS_UPPER | 입력 문자열을 모두 대문자로 변환한 문자열을 반환한다.
115.REGEXP_REPLACE | 지정한 정규 표현을 만족하는 부분을, 지정한 다른 문자열로 치환합니다.
116.REGEXP_SUBSTR | 지정한 정규 표현을 만족하는 부분 문자열을 반환.
119.REPLACE | 파라미터로 주어지는 첫번째 문자열에서, 두번째 문자열을 모두 세번째 문자열로 바꾼 후 결과를 반환한다.
125.RPAD | 인수 expr1 오른편으로 인수 expr2로 지정한 문자를 길이 필요에 따라 반복하여 n만큼 붙여준다
126.RTRIM | 인수 char의 오른쪽 끝에서 부터 set으로 지정된 모든 문자를 제거한다.
133.SOUNDEX | char의 음성 표현을 가지는 문자열을 반환.
147.SUBSTR | 문자열 Char에서 position 문자 위치로부터 substring_length 문자 길이만큼 문자열을 추출하여 반환.
181.TRANSLATE | from_string에서 각 문자를 to_string안의 대응하는 문자로 치환하여 expr을 반환.
183.TREAT | 인수의 선언형을 변경.
184.TRIM | 문자열부터 선행 또는 후행(양쪽)문자를 제거.
191.UPPER | 모든 문자를 대문자로 변환.

3. NLS 문자 함수

처음메뉴로

함수명 | 설명
084.NLS_CHARSET_DECL_LEN | NCHAR열의 선언된 폭을 반환.
085.NLS_CHARSET_ID | 문제셋 이름에 상응하는 ID번호를 반환.
086.NLS_CHARSET_NAME | ID번호 number에 상응하는 문자 세트의 이름을 반환.

4. 수치값을 반환하는 문자함수

처음메뉴로

함수명 | 설명
005.ASCII | 주어진 char의 첫 문자의 아스키 값에 상응하는 10진수값을 반환한다.
058.INSTR | 문자열중에서 지정한 문자가 처음 나타나는 위치를 숫자로 반환.
066.LENGTH | 인수 char의 길이를 반환한다
114.REGEXP_INSTR | 지정한 조건(정규 표현)을 만족하는 부분의 최초의 위치(무슨 문자인지)를 반환.

5. 일시 함수

처음메뉴로

함수명 | 설명
004.ADD_MONTHS | 일자 date에 특정 개월수 integer를 더한 값을 반환한다
032.CURRENT_DATE | 현재 세션의 날짜 정보를 Date 데이터 형으로 반환한다.
033.CURRENT_TIMESTAMP | 현재 session의 날짜와 시간 정보를 반환한다
035.DBTIMEZONE | 데이터 베이스 time zone의 값을 반환한다
045.EXTRACT (datetime) | 특정 날짜,시간 값이나 날짜 값 표현식으로부터 지정된 날짜 영역의 값을 추출하여 반환한다
051.FROM_TZ | timestamp 데이터형과 time zone데이터 형을 TIMESTAMP WITH TIME ZONE 데이터형으로 변환.
062.LAST_DAY | 해당 날짜가 속한 달의 마지막 날짜를 반환한다.
069.LOCALTIMESTAMP | timestamp의 현재 날짜와 시각을 출력한다.
079.MONTHS_BETWEEN | 일자 date1과 date2 사이의 월을 계산한다
082.NEW_TIME | date,zone1시간대를 zone2 시간대로 출력.
083.NEXT_DAY | 해당일을 기준으로 명시된 요일의 다음 날짜를 변환.
093.NUMTODSINTERVAL | n을 INTERVAL DAY TO SECOND 문자로 변경한다.
094.NUMTOYMINTERVAL | n을 INTERVAL YEAR TO MONTH문자로 변경한다
121.ROUND (date) | 포맷 모델 fmt에 의해 지정한 단위로 반올림된 날짜를 반환한다
128.SESSIONTIMEZONE | 현재 세션의 시간대역(time zone)을 반영한다
152.SYS_EXTRACT_UTC | 협정 세계시간 UTC (Coordinated Universal Time—formerly Greenwich Mean Time)을 반환
157.SYSDATE | 데이터 베이스가 있는 OS의 일자와 시간을 반환한다
158.SYSTIMESTAMP | 시스템의 날짜를 반환한다
165.TO_CHAR (datetime) | 사용자가 지정한 폼을 갖는 varchar2 형식의 데이터로 변환한다
169.TO_DSINTERVAL | INTERVAR DAY TO SECOND값으로 변환한다.
178.TO_TIMESTAMP | TIMESTAMP 데이터형의 값으로 변환한다.
179.TO_TIMESTAMP_TZ | TIMESTAMP WITH TIME ZONE 데이터형으로 변환한다.
180.TO_YMINTERVAL | INTERVAL YEAR TO MONTH 형태로 변경한다
186.TRUNC (date) | 날짜를 년,월,일을 기준으로 반올림하거나 절삭한다.
187.TZ_OFFSET | 문장이 실행된 일자에 근거한 인수에 상응하는 time zone offset을 반환한다
6. 일반적인 비교 함수

처음메뉴로

함수명 | 설명
052.GREATEST | 하나 이상의 인수중에서 가장 큰 값을 반환.
065.LEAST | 인수 EXPR의 리스트 중에서 가장 작은 값을 반환.

7. 변환 함수

처음메뉴로

함수명 | 설명
006.ASCIISTR | 주어진 문자열의 아스키 문자열을 반환.
012.BIN_TO_NUM | 비트(2진수) 벡터를 동등한 수치(10진수)로 변환.
015.CAST | 데이터 형식이나 collection 형식을 다른 데이터 형식이나 collection 형식으로변환.
017.CHARTOROWID | CHAR, VARCHAR2, NCHAR, or NVARCHAR2 데이터형태의 값으로부터 ROWID형으로 변환.
021.COMPOSE | 완전한 정규화된 형태의 유니코드를 반환.
023.CONVERT | 문자세트를 다른 문자세트로 문자열을 변환.
037.DECOMPOSE | 입력과 같은 문자 세트로 분해후의 UNICODE 문자열을 반환.
056.HEXTORAW | 16진수를 raw값으로 변환.
093.NUMTODSINTERVAL | n을 INTERVAL DAY TO SECOND 문자로 변경.
094.NUMTOYMINTERVAL | n을 INTERVAL YEAR TO MONTH문자로 변경한다.
110.RAWTOHEX | RAW을 16진수의 문자로 변환.
111.RAWTONHEX | RAW을 NVARCHAR2 형태의 16진수로 변환.
123.ROWIDTOCHAR | rowid 값을 VARCHAR2형식으로 변환.
124.ROWIDTONCHAR | rowid값을 NVARCHAR2형식으로 변환.
127.SCN_TO_TIMESTAMP | 시스템 변경 번호(SCN)로 평가되는 수치를 인수로 취하여, SCN과 관련된 가까운 timestamp를 반환.
161.TIMESTAMP_TO_SCN | timestamp와 관련된 시스템 변경 번호(system change number,SCN)을 반환.
162.TO_BINARY_DOUBLE | 배정밀도 부동소수점을 반환.
163.TO_BINARY_FLOAT | 단순정밀도(single-precision) 부동 소수점수(floating-point number)를 반환.
164.TO_CHAR (character) | 데이터 베이스 문자 세트로 변환.
165.TO_CHAR (datetime) | 지정된 포맷의 VARCHAR2 데이터 타입의 값으로 변환.
166.TO_CHAR (number) | VARCHAR2 데이터형의 값으로 변환.
167.TO_CLOB | NCLOB값을 CLOB값으로 변환.
168.TO_DATE | char을 날짜형 데이터 타입값으로 변환.
169.TO_DSINTERVAL | INTERVAR DAY TO SECOND값으로 변환.
170.TO_LOB | LONG또는 LONG ROW값을 LOB값으로 변환.
171.TO_MULTI_BYTE | multibyte 문자를 상응하는 single-byte 문자로 변환한 문자를 반환.
172.TO_NCHAR (character) | 문자열,CLOB,NCLOB 값을 각국 문자 세트로 변환.
173.TO_NCHAR (datetime) | national character set으로 변환.
174.TO_NCHAR (number) | n을 national character set으로 변환.
175.TO_NCLOB | CLOB값을 NCLOB값으로 변환.
176.TO_NUMBER | expr을 NUMBER 데이터형의 값으로 변환.
177.TO_SINGLE_BYTE | multibyte문자를 그에 상응하는 single-byte문자로 변환하여 char을 반환.
178.TO_TIMESTAMP | CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터형의 char을 TIMESTAMP 데이터형의 값으로 변환.
179.TO_TIMESTAMP_TZ | CHAR,VARCHAR2,NCHAR,NVARCHAR2데이터형의 char을 TIMESTAMP WITH TIME ZONE 데이터형으로 변환.
180.TO_YMINTERVAL | CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터형의 문자열을 INTERVAL YEAR TO MONTH 형태로 변경
182.TRANSLATE ... USING | char을 데이터 베이스 문자세트와 각국어 문자 센트사이의 변환에 대한 지정된 문자 세트로 변경.
189.UNISTR | 텍스트 문자열을 인수로 취하고, 각국어 문자 세트로 반환.
8. LARGE OBJECT(LOB) 함수

처음메뉴로

함수명 | 설명
011.BFILENAME | 서버 파일 시스템의 물리 LOB 바이너리 파일과 연관된 BFILE locator를 반환.
042.EMPTY_BLOB, EMPTY_CLOB | LOB 변수를 초기화하기 위하여 쓰이거나, 또는 INSERT 문이나 UPDATE 문에서 empty LOB 위치를 반환.

9. 수집 함수

처음메뉴로

함수명 | 설명
014.CARDINALITY | nested table에서 원소의 수를 반환.
020.COLLECT | 선택된 행으로부터 입력된 형태의 중첩 테이블을 생성.
103.POWERMULTISET | 입력된 중첩(nested)테이블의 공백이 아닌 모든 부분집합(submultisets)을 소유한 중첩 테이블의 중첩된 테이블을 반환.
104.POWERMULTISET_BY_CARDINALITY | 중첩 테이블과 cardinality(주어진 수학적 집합에서 요소들의 개수)를 취해서, 지정한 카디나리트의 중첩 테이블의 모든 비공백 부분집합(submultisets이라고 불리는)을 소유하는 중첩 테이블의 중첩테이블을 반환.
129.SET | 중첩 테이블에서 중복을 배제하여 반환.

10. 계층 함수

처음메뉴로

함수명 | 설명
149.SYS_CONNECT_BY_PATH | 루트로 부터 node로 열의 값 Path를 반환.

11. XML 함수

처음메뉴로

함수명 | 설명
039.DEPTH | 상관 변수를 가지는 UNDER_PATH조건에 의해 지정된 PATH에서 레벨의 수를 반환.
043.EXISTSNODE | node의 존재여부를 확인하여 그 결과를 반환.
046.EXTRACT (XML) | XML 플래그먼트(fragment)를 포함한 XMLType 인스턴스를 반환.
047.EXTRACTVALUE | node의 스칼라 값을 반환.
098.PATH | 지정된 자원에서 상대적인 경로를 반환.
151.SYS_DBURIGEN | 특정 열 또는 행 오브젝트에 대한 DBURIType 데이터 타입의 URL을 생성.
155.SYS_XMLAGG | 입력 받은 모든 문서를 하나의 XML문서를 통합.
156.SYS_XMLGEN | 스칼라값,object type,xml type 인스턴스를 XML문서로 변형.
200.XMLAGG | XML fragment(조각)의 집합체를 취해서, 집계된 XML 문서를 반환. GROUP BY 질의에서 XML 데이타를 그룹으로 분류 또는 집계하는 함수.
201.XMLCOLATTVAL | XML 단편(fragment)을 생성하고, 각각의 XML 단편(fragment)이 속성 name을 포함한 name열을 가지는 결과 XML으로 확장.
202.XMLCONCAT | 둘 이상의 XML 값을 연결하는 함수.
203.XMLELEMENT | XMLType 타입의 instance를 반환. 관계형 값을 XML 요소로 변형시키는 함수.
204.XMLFOREST | 각 인수의 파라미터를 XML로 변환하고, 변환된 인수를 연결한 XML 단편(fragment)을 반환. 관계형 값 목록으로부터 XML 요소의 목록(일명: '포리스트(forest)')을 생성하는 함수.
205.XMLSEQUENCE | XMLType에 있는 top-level 노드의 varray를 반환. 커서의 각 행에 대하여 XMLSequence 형태로써 XML문서를 반환.
206.XMLTRANSFORM | 스타일 쉬트를 인스턴스로 적용하고, XMLType를 반환.
12. 인코딩 함수와 디코딩 함수

처음메뉴로

함수명 | 설명
036.DECODE | 일반적인 프로그래밍 언어의 IF문을 SQL 문자 또는 PL/SQL안으로 끌여들여 사용하기 위하여 만들어진 오라클함수.
041.DUMP | 지정한 데이터의 위치와 길이 등을 지정한 형식으로 반환.
097.ORA_HASH | 주어진 표현에 대한 해쉬 값을 계산하는 함수.
198.VSIZE | expr의 내부 표현에서 바이트의 수를 반환.

13. NULL 함수

처음메뉴로

함수명 | 설명
019.COALESCE | 나열된 값을 순차적으로 체크하여 NULL이 아닌 첫번째 인수를 반환.
068.LNNVL | 조건의 한쪽 또는 양쪽 연산자가 NULL이 존재할 경우에, 조건문을 평가하기 위한 방법을 제공.
092.NULLIF | expr1과 expr2가 같으면, NULL값을 반환.
095.NVL | 쿼리의 결과에서 NULL(공백으로 반환)값을 치환.
096.NVL2 | 지정한 표현이 NULL인지 여부에 근거하여 쿼리의 반환될 값을 판단할수 있다. expr1이 NULL이 아니라면, NVL2는 expr2를 반환한다. 만약 expr1인 NULL이라면, NVL2는 expr3을 반환.

14. 환경 함수 와 식별자 함수

처음메뉴로

함수명 | 설명
150.SYS_CONTEXT | 문맥 namespace와 관련된 parameter의 값을 반환.
153.SYS_GUID | 16바이트로 구성된 고유전역식별자(globally unique identifier,RAW 값)을 생성하여 반환.
154.SYS_TYPEID | 피연산자(operand)의 대부분 지정한 형태의 typeid를 반환.
188.UID | 세션 사용자의 유일한 식별하는 정수를 반환.(로그인 유저)
192.USER | VARCHAR2 형태를 가지는 세션 사용자(로그인 유저)의 이름을 반환.
193.USERENV | 현재 세션에 대한 정보를 반환.

15. 집계 함수

처음메뉴로

Aggregate functions return a single result row based on groups of rows, rather than on single rows. Aggregate functions can appear in select lists and in ORDER BY and HAVING clauses. They are commonly used with the GROUP BY clause in a SELECT statement, where Oracle Database divides the rows of a queried table or view into groups. In a query containing a GROUP BY clause, the elements of the select list can be aggregate functions, GROUP BY expressions, constants, or expressions involving one of these. Oracle applies the aggregate functions to each group of rows and returns a single result row for each group.

If you omit the GROUP BY clause, then Oracle applies aggregate functions in the select list to all the rows in the queried table or view. You use aggregate functions in the HAVING clause to eliminate groups from the output based on the results of the aggregate functions, rather than on the values of the individual rows of the queried table or view.

Many (but not all) aggregate functions that take a single argument accept these clauses:

  • DISTINCT causes an aggregate function to consider only distinct values of the argument expression.

  • ALL causes an aggregate function to consider all values, including all duplicates.

For example, the DISTINCT average of 1, 1, 1, and 3 is 2. The ALL average is 1.5. If you specify neither, then the default is ALL.

All aggregate functions except COUNT(*) and GROUPING ignore nulls. You can use the NVL function in the argument to an aggregate function to substitute a value for a null. COUNT never returns null, but returns either a number or zero. For all the remaining aggregate functions, if the data set contains no rows, or contains only rows with nulls as arguments to the aggregate function, then the function returns null.

You can nest aggregate functions. For example, the following example calculates the average of the maximum salaries of all the departments in the sample schema hr:

SELECT AVG(MAX(salary)) FROM employees GROUP BY department_id;

AVG(MAX(SALARY))
----------------
           10925

This calculation evaluates the inner aggregate (MAX(salary)) for each group defined by the GROUP BY clause (department_id), and aggregates the results again.

The aggregate functions are:

함수명 | 설명
010.AVG | 지정된 컬럼에 대한 조건을 만족하는 행중에서 Null을 제외한 평균을 반환.
020.COLLECT | 선택된 행으로부터 입력된 형태의 중첩 테이블을 생성.
024.CORR | 수치 쌍에 대한 상관 계수를 반환.
025.CORR_* | (CORR 참조)는 Pearson's 상관계수를 계산.
028.COUNT | 쿼리에 의해 반환된 행의 수를 반환.
029.COVAR_POP | number조합의 세트의 모집단 공분산을 반환.
030.COVAR_SAMP | number쌍의 세트의 표본 공분산을 반환.
031.CUME_DIST | 값의 그룹에 있는 값의 누적 분포치를 계산.
038.DENSE_RANK | ORDER BY절에 사용된 컬럼이나 표현식에 대하여 순위를 부여하는데 RANK()와 달리 동일 순위 다음의 순위는 동일 순위의 수와 상관없이 1 증가된 값을 돌려준다
048.FIRST | 주어진 소트 지정에 대해서 FIRST 또는 LAST로서 순위를 주어서 행의 세트로부터 값의 세트에 운영하는 집계와 분석 함수.
053.GROUP_ID | 지정된 GROUP BY 결과로부터 중복된 그룹을 구별.
054.GROUPING | ROLLUP이나 CUBE 연산자와 함께 사용하여 GROUPING 함수에 기술된 컬럼이 그룹핑 시 즉, ROLLUP이나 CUBE 연산시 사용이 되었는지를 보여 주는 함수.
055.GROUPING_ID | 행과 관련되는 GROUPING 비트 벡터에 대응되는 수치를 반환.
061.LAST | 행을 서열화 시켜서 마지막 행을 추출.
075.MAX | 인수중에서 최대값을 반환.
076.MEDIAN | 중앙값 또는 값의 정렬후에 중앙값이 보간된 값을 반환.
077.MIN | 인수중에서 최소값을 반환.
099.PERCENT_RANK | 그룹 수에 대한 값의 순위 퍼센트를 반환.
100.PERCENTILE_CONT | 연속된 분포 모델을 가정한 역 분포 함수(inverse distribution function).
101.PERCENTILE_DISC | 이산 분포 모형을 가정하는 역 분포 함수.
108.RANK | 값의 그룹에서 값의 순위를 계산.
117.REGR_ (Linear Regression) Functions | 선형회귀함수는 정규 최소 제곱 회귀 선상을 수치 쌍의 세트에 적합.
135.STATS_BINOMIAL_TEST | 단지 두개의 유효한 값이 존재하는 이분 변수(두개의 배타적인 값을 가지는 변수)에 대해서 이용되는 정확 확률 테스트.
136.STATS_CROSSTAB | 교차분석(crosstab)은 두개의 명목 변수를 분석하는 방법.
137.STATS_F_TEST | STATS_F_TEST함수는 두개의 분산이 유의한 차가 있는지 테스트.
138.STATS_KS_TEST | 두개의 표본이 같은 모집단에 속하고 있는지 또는 같은 분포를 가지는 모집단에 속하고 있는지 테스트 하는 Kolmogorov-Smirnov함수.
139.STATS_MODE | 가장 큰 빈도를 가지는 값을 반환.
140.STATS_MW_TEST | A Mann Whitney test는 2개의 독립 표본을 비교.
141.STATS_ONE_WAY_ANOVA | 일원분산분석 함수(STATS_ONE_WAY_ANOVA)는 분산의 다른 2개 추정치 비교에 의해 통계적 유의성에 대한 평균(그룹 또는 변수에 대한)의 유의한 차를 검증.
142.STATS_T_TEST_* | t 검정에서는, 평균치의 차이의 유의성을 측정.
143.STATS_WSR_TEST | 대응쌍표본의 윌콕스 부호 순위 검증을 수행하며,표본간의 차이가 zero로부터 유의한 차이가 있는지 검정.
144.STDDEV | Number의 조합인 expr의 표본표준편차를 반환.
145.STDDEV_POP | 모집단 표준 편차를 계산하고, 모집단 분산의 제곱근값을 반환.
146.STDDEV_SAMP | 누적 표본 표준편차를 계산하고, 표본 분산의 제곱근값을 반환.
148.SUM | expr의 값의 합을 반환.
195.VAR_POP | Null값들을 제거한후에 Number 세트의 모집단 분산을 반환.
196.VAR_SAMP | null들을 제거한후에 number의 세트의 표본분산을 반환.
197.VARIANCE | expr의 분산을 반환.

16. 분석 함수

처음메뉴로

Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that they return multiple rows for each group. The group of rows is called a window and is defined by the analytic_clause. For each row, a sliding window of rows is defined. The window determines the range of rows used to perform the calculations for the current row. Window sizes can be based on either a physical number of rows or a logical interval such as time.

Analytic functions are the last set of operations performed in a query except for the final ORDER BY clause. All joins and all WHERE, GROUP BY, and HAVING clauses are completed before the analytic functions are processed. Therefore, analytic functions can appear only in the select list or ORDER BY clause.

Analytic functions are commonly used to compute cumulative, moving, centered, and reporting aggregates.

analytic_function::=
Description of analytic_function.gif follows
Description of the illustration analytic_function.gif

analytic_clause::=
Description of analytic_clause.gif follows
Description of the illustration analytic_clause.gif

query_partition_clause::=
Description of query_partition_clause.gif follows
Description of the illustration query_partition_clause.gif

order_by_clause::=
Description of order_by_clause.gif follows
Description of the illustration order_by_clause.gif

windowing_clause ::=
Description of windowing_clause.gif follows
Description of the illustration windowing_clause.gif

The semantics of this syntax are discussed in the sections that follow.

analytic_function

Specify the name of an analytic function (see the listing of analytic functions following this discussion of semantics).

arguments

Analytic functions take 0 to 3 arguments. The arguments can be any numeric datatype or any nonnumeric datatype that can be implicitly converted to a numeric datatype. Oracle determines the argument with the highest numeric precedence and implicitly converts the remaining arguments to that datatype. The return type is also that datatype, unless otherwise noted for an individual function.

analytic_clause

Use OVER analytic_clause to indicate that the function operates on a query result set. That is, it is computed after the FROM, WHERE, GROUP BY, and HAVING clauses. You can specify analytic functions with this clause in the select list or ORDER BY clause. To filter the results of a query based on an analytic function, nest these functions within the parent query, and then filter the results of the nested subquery.

Notes on the analytic_clause:

  • You cannot specify any analytic function in any part of the analytic_clause. That is, you cannot nest analytic functions. However, you can specify an analytic function in a subquery and compute another analytic function over it.

  • You can specify OVER analytic_clause with user-defined analytic functions as well as built-in analytic functions. See CREATE FUNCTION .

query_partition_clause

Use the PARTITION BY clause to partition the query result set into groups based on one or more value_expr. If you omit this clause, then the function treats all rows of the query result set as a single group.

To use the query_partition_clause in an analytic function, use the upper branch of the syntax (without parentheses). To use this clause in a model query (in the model_column_clauses) or a partitioned outer join (in the outer_join_clause), use the lower branch of the syntax (with parentheses).

You can specify multiple analytic functions in the same query, each with the same or different PARTITION BY keys.

If the objects being queried have the parallel attribute, and if you specify an analytic function with the query_partition_clause, then the function computations are parallelized as well.

Valid values of value_expr are constants, columns, nonanalytic functions, function expressions, or expressions involving any of these.

order_by_clause

Use the order_by_clause to specify how data is ordered within a partition. For all analytic functions except PERCENTILE_CONT and PERCENTILE_DISC (which take only a single key), you can order the values in a partition on multiple keys, each defined by a value_expr and each qualified by an ordering sequence.

Within each function, you can specify multiple ordering expressions. Doing so is especially useful when using functions that rank values, because the second expression can resolve ties between identical values for the first expression.

Whenever the order_by_clause results in identical values for multiple rows, the function returns the same result for each of those rows. Please refer to the analytic example for SUM for an illustration of this behavior.

Restriction on the ORDER BY Clause

When used in an analytic function, the order_by_clause must take an expression (expr). The SIBLINGS keyword is not valid (it is relevant only in hierarchical queries). Position (position) and column aliases (c_alias) are also invalid. Otherwise this order_by_clause is the same as that used to order the overall query or subquery.

ASC | DESC

Specify the ordering sequence (ascending or descending). ASC is the default.

NULLS FIRST | NULLS LAST

Specify whether returned rows containing nulls should appear first or last in the ordering sequence.

NULLS LAST is the default for ascending order, and NULLS FIRST is the default for descending order.

Analytic functions always operate on rows in the order specified in the order_by_clause of the function. However, the order_by_clause of the function does not guarantee the order of the result. Use the order_by_clause of the query to guarantee the final result ordering.

windowing_clause

Some analytic functions allow the windowing_clause. In the listing of analytic functions at the end of this section, the functions that allow the windowing_clause are followed by an asterisk (*).

ROWS | RANGE

These keywords define for each row a window (a physical or logical set of rows) used for calculating the function result. The function is then applied to all the rows in the window. The window moves through the query result set or partition from top to bottom.

  • ROWS specifies the window in physical units (rows).

  • RANGE specifies the window as a logical offset.

You cannot specify this clause unless you have specified the order_by_clause.

The value returned by an analytic function with a logical offset is always deterministic. However, the value returned by an analytic function with a physical offset may produce nondeterministic results unless the ordering expression results in a unique ordering. You may have to specify multiple columns in the order_by_clause to achieve this unique ordering.

BETWEEN ... AND

Use the BETWEEN ... AND clause to specify a start point and end point for the window. The first expression (before AND) defines the start point and the second expression (after AND) defines the end point.

If you omit BETWEEN and specify only one end point, then Oracle considers it the start point, and the end point defaults to the current row.

UNBOUNDED PRECEDING

Specify UNBOUNDED PRECEDING to indicate that the window starts at the first row of the partition. This is the start point specification and cannot be used as an end point specification.

UNBOUNDED FOLLOWING

Specify UNBOUNDED FOLLOWING to indicate that the window ends at the last row of the partition. This is the end point specification and cannot be used as a start point specification.

CURRENT ROW

As a start point, CURRENT ROW specifies that the window begins at the current row or value (depending on whether you have specified ROW or RANGE, respectively). In this case the end point cannot be value_expr PRECEDING.

As an end point, CURRENT ROW specifies that the window ends at the current row or value (depending on whether you have specified ROW or RANGE, respectively). In this case the start point cannot be value_expr FOLLOWING.

value_expr PRECEDING or value_expr FOLLOWING

For RANGE or ROW:

  • If value_expr FOLLOWING is the start point, then the end point must be value_expr FOLLOWING.

  • If value_expr PRECEDING is the end point, then the start point must be value_expr PRECEDING.

If you are defining a logical window defined by an interval of time in numeric format, then you may need to use conversion functions.

If you specified ROWS:

  • value_expr is a physical offset. It must be a constant or expression and must evaluate to a positive numeric value.

  • If value_expr is part of the start point, then it must evaluate to a row before the end point.

If you specified RANGE:

  • value_expr is a logical offset. It must be a constant or expression that evaluates to a positive numeric value or an interval literal. Please refer to "Literals " for information on interval literals.

  • You can specify only one expression in the order_by_clause

  • If value_expr evaluates to a numeric value, then the ORDER BY expr must be a numeric or DATE datatype.

  • If value_expr evaluates to an interval value, then the ORDER BY expr must be a DATE datatype.

If you omit the windowing_clause entirely, then the default is RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.

Analytic functions are commonly used in data warehousing environments. In the list of analytic functions that follows, functions followed by an asterisk (*) allow the full syntax, including the windowing_clause.

함수명 | 설명
010.AVG * | 지정된 컬럼에 대한 조건을 만족하는 행중에서 Null을 제외한 평균을 반환.
024.CORR * | 수치 쌍에 대한 상관 계수를 반환.
028.COUNT * | 쿼리에 의해 반환된 행의 수를 반환.
029.COVAR_POP * | number조합의 세트의 모집단 공분산을 반환.
030.COVAR_SAMP * | number쌍의 세트의 표본 공분산을 반환.
031.CUME_DIST | 값의 그룹에 있는 값의 누적 분포치를 계산.
038.DENSE_RANK | ORDER BY절에 사용된 컬럼이나 표현식에 대하여 순위를 부여하는데 RANK()와 달리 동일 순위 다음의 순위는 동일 순위의 수와 상관없이 1 증가된 값을 돌려준다
048.FIRST | 주어진 소트 지정에 대해서 FIRST 또는 LAST로서 순위를 주어서 행의 세트로부터 값의 세트에 운영하는 집계와 분석 함수.
049.FIRST_VALUE * | 값의 정렬된 세트에서 첫번째 값을 반환.
060.LAG | 현재 행을 기준으로 이전 값을 참조하는 함수.
061.LAST | 행을 서열화 시켜서 마지막 행을 추출.
063.LAST_VALUE * | 윈도우에서 정렬된 값중에서 마지막 값을 반환.
064.LEAD | 현재 행을 기준으로 이후의 값을 참조하는 함수.
075.MAX * | 인수중에서 최대값을 반환.
077.MIN * | 인수중에서 최소값을 반환.
091.NTILE | 순서화된 데이터를 expr에 의해 지정된 bucket의 수로 분한하여, 각 행을 적절한 bucket 번호를 할당. 출력 결과를 사용자가 지정한 그룹 수로 나누어 출력하는 함수.
099.PERCENT_RANK | 그룹 수에 대한 값의 순위 퍼센트를 반환.
100.PERCENTILE_CONT | 연속된 분포 모델을 가정한 역 분포 함수(inverse distribution function).
101.PERCENTILE_DISC | 이산 분포 모형을 가정하는 역 분포 함수.
108.RANK | 값의 그룹에서 값의 순위를 계산.
109.RATIO_TO_REPORT | 값의 세트의 합에 대한 값의 비율을 계산.
117.REGR_ (Linear Regression) Functions * | 선형회귀함수는 정규 최소 제곱 회귀 선상을 수치 쌍의 세트에 적합.
122.ROW_NUMBER | 분할별로 정렬된 결과에 대해 순위를 부여하는 기능. 1로 시작하는 order_by_clause에서 지정된 행의 순위 순서로, 적용되는 각 행에 unique 순서를 할당.
144.STDDEV * | Number의 조합인 expr의 표본표준편차를 반환.
145.STDDEV_POP * | 모집단 표준 편차를 계산하고, 모집단 분산의 제곱근값을 반환.
146.STDDEV_SAMP * | 누적 표본 표준편차를 계산하고, 표본 분산의 제곱근값을 반환.
148.SUM * | expr의 값의 합을 반환.
195.VAR_POP * | Null값들을 제거한후에 Number 세트의 모집단 분산을 반환.
196.VAR_SAMP * | null들을 제거한후에 number의 세트의 표본분산을 반환.
197.VARIANCE * | expr의 분산을 반환.
17. Object 참조 함수

처음메뉴로

함수명 | 설명
040.DEREF | 인수 expr의 오브젝트 참조를 반환.
074.MAKE_REF | object 인식자가 주 키로 근거하고 있는 object 테이블에서 object view의 행 또는 object 표의 행에 대한 REF를 생성.
112.REF | 인수로써 오브젝트 테이블 또는 오브젝트 뷰의 행과 연관된 상관 변수(테이블 별명)를 취한다
113.REFTOHEX | 인수 expr을 16진수로 변환.
194.VALUE | object 테이블에 저장된 object instance를 반환.

18. 모델 함수

처음메뉴로

함수명 | 설명
034.CV | 포뮬러의 좌측 항에 정의된 multi-cell reference를 우측 항으로 복사하는 기능을 제공. 우측 항 계산을 위해 좌측 항의 값 이용하기.
059.ITERATION_NUMBER | 델 규칙에 따라 완료된 반복을 나타내는 정수를 반환.
105.PRESENTNNV | cell_reference가 존재하고 NULL이 아닌 경우, model_clause이 실행되기 전에 expr1을 반환.
106.PRESENTV | cell_reference가 존재할때 expr1을 반환한다. 그 이외에는 expr2를 반환.
107.PREVIOUS | 각 iteration의 초기에 cell_reference의 값을 반환.

19. 기타 단일행 함수

처음메뉴로

함수명 | 설명
152.SYS_EXTRACT_UTC | 협정 세계시간 UTC (Coordinated Universal Time—formerly Greenwich Mean Time)을 추출.
190.UPDATEXML | XMLType인스턴스와 XPath값 쌍을 취하고, 업데이트된 값을 가지는 XMLType 인스턴스를 반환.

Go to previous page
Previous 		Go to next page
Next
2006년 백 승 민 제작하였답니다.
(http://cafe.daum.net/statsas , http://statwith.pe.kr)


ABS

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ABS

문법

abs::=
Description of abs.gif follows

그림 설명

목적

ABS(n)은 n의 절대값을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

Examples

다음 예제는 -15의 절대값 반환 :

SELECT ABS(-15) "Absolute" FROM DUAL;

  Absolute
----------
        15


ACOS

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ACOS

문법

acos::=
Description of acos.gif follows

그림 설명

목적

ACOS(n)은 n의 역코사인(arc cosine)값을 반환. 인수n은 -1~1범위. 반환값은 0~pi(라디안)의 범위로 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 0.3의 arc cosine반환 :

SELECT ACOS(.3)"Arc_Cosine" FROM DUAL;

Arc_Cosine
----------
1.26610367


ASIN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ASIN

문법

asin::=
Description of asin.gif follows

그림 설명

목적

ASIN(n)은 n의 역사인(arc sine)값을 반환한다. 인수 n은 -1~1의 범위이고, 반환값은 라디안으로 표현되는 -pi/2~pi/2의 범위값이다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

0.3의 arc sine값을 반환 :

SELECT ASIN(.3) "Arc_Sine" FROM DUAL;

 Arc_Sine
----------
.304692654


ATAN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ATAN

문법

atan::=
Description of atan.gif follows

그림 설명

목적

ATAN(n)함수는 n의 역탄젠트(arc tangent)값을 반환한다. 인수 n은 -1~1의 범위이고, 반환값은 라디안으로 표현되는 -pi/2~pi/2의 범위값이다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 0.3의 arc tangent값을 반환.

SELECT ATAN(.3) "Arc_Tangent" FROM DUAL;

Arc_Tangent
----------
.291456794


ATAN2

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ATAN2

문법

atan2::=
Description of atan2.gif follows

그림 설명

목적

ATAN2(n,m)은 atan2(n/m)과 같으며, n/m의 역탄젠트(arc tangent)값을 반환한다. 인수 n은 범위가 제한이 없고, n과 m의 부호에 의존하는 -pi~pi(라디안)의 범위 값을 반환한다. ATAN2(n,m)은 ATAN(n/m)과 같은 표현이다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 .3과 .2의 arc tangent를 반환 :

SELECT ATAN2(.3, .2) "Arc_Tangent2" FROM DUAL;

Arc_Tangent2
------------
  .982793723


BITAND

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

BITAND

문법

bitand::=
Description of bitand.gif follows

그림 설명 : bitand(인수1,인수2)

목적

BITAND 함수는 인수1과 인수2의 비트에 대한 AND연산을 수행하여 정수를 반환한다. expr1과 expr2는 음이 아닌 정수로 변환되어, AND 연산을 계산하여 정수를 반환한다. 이 함수는 일반적으로 DECODE함수와 함께 이용하는데, 다음과 같이 설명할수 있다.

AND연산은 2개의 비트를 비교한다. 값이 같을 경우에는 1을 반환한다. 값이 다를 경우에는 0을 반환한다. 중요한 비트만 비교를 한다. 예를 들어, 정수 5(이진수 101)과 1(이진수 001)의 AND연산은 1(이진수 1)이다.

양쪽 인수는 임의의 수치 데이터형 또는 암묵적으로 NUMBER로 변환 가능한 수치 이외의 데이터형을 지정할수 있다.이 함수는 NUMBER를 반환환다.

SAS 참고

http://www.statwith.pe.kr/SAS/1.FUNCTION/F0024.htm

예제

다음 예제는 oe.order 테이블에서 개별 비트에 의해 각 order_status를 표시한다.(이 예제는 총 7인 옵션을 지정하였기 때문에, order_status가 7을 넘는 행은 제외된다.) Location변수의 경우 비트 연산 결과가 1이면 'Warehouse' 아니면, 'Postoffice'를 반환한다.

SELECT order_id, customer_id,order_status
  DECODE(BITAND(order_status, 1), 1, 'Warehouse', 'PostOffice') Location,
  DECODE(BITAND(order_status, 2), 2, 'Ground', 'Air') Method,
  DECODE(BITAND(order_status, 4), 4, 'Insured', 'Certified') Receipt
  FROM  oe.orders
  WHERE order_status < 8;

  ORDER_ID CUSTOMER_ID LOCATION   MET RECEIPT
---------- ----------- ---------- --- ---------
      2458         101 Postoffice Air Certified
      2397         102 Warehouse  Air Certified
      2454         103 Warehouse  Air Certified
      2354         104 Postoffice Air Certified
      2358         105 Postoffice G   Certified
      2381         106 Warehouse  G   Certified
      2440         107 Warehouse  G   Certified
      2357         108 Warehouse  Air Insured
      2394         109 Warehouse  Air Insured
      2435         144 Postoffice G   Insured
      2455         145 Warehouse  G   Insured
. . .


CEIL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CEIL

문법

ceil::=
Description of ceil.gif follows

그림 설명 : ceil(n)

목적

CEIL 함수는 인수에서 지정한 수치를 올림하여 정수를 구하는 함수이다. 즉, 인수로 지정한 수치보다 크고 가까운 정수를 반환한다. 음의 수치를 부여하면 음수측의 가장 가까운 정수를 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다.이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.

예제

다음 예제는 15.7 이상의 가장 작은 정수를 반환 :

SELECT CEIL(15.7) "Ceiling" FROM DUAL;

   Ceiling
----------
        16


COS

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COS

문법

cos::=
Description of cos.gif follows

그림 설명

목적

COS은 파라미터 n(라디안으로 표현되는 각도)의 코사인값을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 180도의 코사인값을 반환한다.

SELECT COS(180 * 3.14159265359/180)
   "Cosine of 180 degrees" FROM DUAL;

Cosine of 180 degrees
---------------------
                   -1


COSH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COSH

문법

cosh::=
Description of cosh.gif follows

그림 설명

목적

COSH은 파라미터 n(라디안으로 표현되는 각도)의 쌍곡 코사인값(hyperbolic cosine)을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 0의 hyperbolic cosine을 반환한다.

SELECT COSH(0) "Hyperbolic cosine of 0" FROM DUAL;

Hyperbolic cosine of 0
----------------------
                     1


EXP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

EXP

문법

exp::=
Description of exp.gif follows

그림 설명

목적

EXP함수는 e의 n 제곱 값을 반환한다. e=2.71828183 이 함수는 인수와 같은 타입의 값을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 e의 4승값을 계산한다.

SELECT EXP(4) "e to the 4th power" FROM DUAL;

e to the 4th power
------------------
          54.59815


FLOOR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

FLOOR

문법

floor::=
Description of floor.gif follows

그림 설명

목적

FLOOR 함수는 지정한 숫자보다 작거나 같은 정수 중에서 최대값을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 이 함수는 인수의 수치형 형태와 같은 데이터형을 반환한다.

예제

다음 예제는 15.7보다 작거나 같은 정수 중에서 최대값을 반환.

SELECT FLOOR(15.7) "Floor" FROM DUAL;

     Floor
----------
        15


LN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LN

문법

ln::=
Description of ln.gif follows

그림 설명

목적

LN함수는 입력값의 자연 로그 값을 반환한다. LN은 0보다 큰 값이다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 95의 자연로그값을 반환.

SELECT LN(95) "Natural log of 95" FROM DUAL;

Natural log of 95
-----------------
       4.55387689


LOG

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LOG

문법

log::=
Description of log.gif follows

그림 설명

목적

LOG(m,n)에서 밑을 m으로 한 n의 로그 값을 반환한다. 밑 m은 0 또는 1 이외의 정수값, n은 양수값이다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 NUMBER를 반환한다.

예제

다음 예제는 100의 로그값을 반환.

SELECT LOG(10,100) "Log base 10 of 100" FROM DUAL;

Log base 10 of 100
------------------
                 2


MOD

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

MOD

문법

mod::=
Description of mod.gif follows

그림 설명

목적

MOD함수는 n2을 n1으로 나눈 나머지값을 반환한다. n1이 0이면, n2를 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 오라클은 우선 순위가 가장 높은 수치형 인수를 판단하여, 나머지 인수를 그 데이터형에 암묵적으로 변환하고, 그 데이터 형을 반환한다.

예제

다음 예제는 11을 4로 나눈 나머지를 반환.

SELECT MOD(11,4) "Modulus" FROM DUAL;

   Modulus
----------
         3

This function behaves differently from the classical mathematical modulus function when m is negative. The classical modulus can be expressed using the MOD function with this formula:

m - n * FLOOR(m/n)

The following table illustrates the difference between the MOD function and the classical modulus:

m | n | MOD(m,n) | Classical Modulus
11 | 4 | 3 | 3
11 | -4 | 3 | -1
-11 | 4 | -3 | 1
-11 | -4 | -3 | -3

참 조 :

FLOOR and REMAINDER , which is similar to MOD, but uses ROUND in its formula instead of FLOOR


NANVL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NANVL

문법

nanvl::=
Description of nanvl.gif follows

그림 설명

목적

NANVL함수는 BINARY_FLOAT 또는 BINARY_DOUBLE 형태의 부동 소수점에 유용하다. 만약 입력 값 n2가 Nan(숫치가 아닌)라면, 대체 값 n1을 반환하도록 오라클에 지시한다. 만약 n2가 NaN이 아니라면, 오라클은 n2를 반환한다. 이 함수는 NaN값을 Null으로 매핑하는데 위해 유용하다.

이 함수는 인수로써 수치형 데이터 형 또는 암묵적으로 수치 데이터형으로 변환가능한 비수치형 데이터형을 취한다. 오라클은 수치 순위가 가장 높은 인수를 판단하여, 나머지 인수를 그 데이터 형으로 암묵적으로 변환하여 그 데이터형을 반환한다.

예제

TO_BINARY_DOUBLE 로 작성된 float_point_demo 테이블을 이용하여, 테이블에 두번째 엔트리를 삽입한다.

Insert INTO float_point_demo
  VALUES (0,'NaN','NaN');

SELECT * FROM float_point_demo;

   DEC_NUM BIN_DOUBLE  BIN_FLOAT
---------- ---------- ----------
   1234.56 1.235E+003 1.235E+003
         0        Nan        Nan

다음 예제는 수치의 경우에는 bin_float를 반환하고, 그이외의 경우 0을 반환한다.

SELECT bin_float, NANVL(bin_float,0)
  FROM float_point_demo;

 BIN_FLOAT NANVL(BIN_FLOAT,0)
---------- ------------------
1.235E+003         1.235E+003
       Nan                  0


POWER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

POWER

문법

power::=
Description of power.gif follows

그림 설명

목적

POWER함수는 n2의 n1승 값을 반환한다. 밑n2와 지수 n은 임의의 수이나, n2가 음수이면,n1은 정수이어야한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 NUMBER를 반환한다.

예제

다음 예제는 3의 2승을 반환.

SELECT POWER(3,2) "Raised" FROM DUAL;

    Raised
----------
         9


REMAINDER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REMAINDER

문법

remainder::=
Description of remainder.gif follows

그림 설명

목적

REMAINDER함수는 n2를 n1으로 나눈 나머지를 반환한다.

이 함수는 인수로써 임의의 수치형 또는 암묵적으로 수치형으로 변환가능한 비수치형 데이터형을 취한다. 오라클은 수치의 우선 순위가 가장 높은 인수를 판단하여 나머지 인수를 암묵적으로 그 데이터형을 변환하여, 그 데이터형을 반환한다.

MOD함수는 REMAINDER함수와 유사하나, MOD함수는 식에서 FLOOR을 사용하고, REMAINDER은 ROUND를 사용한다. MOD 함수 참고.

  • 만약 n1=0 또는 n2=무한대, 오라클은 아래를 반환한다.

    • 만약 양쪽 인수가 NUMBER형인 경우 에러를 발생

    • 만약 양쪽 인수가 BINARY_FLOAT 또는 BINARY_DOUBLE 인경우, NaN을 반환.

  • 만약 n1!=0 이라면, 나머지는 n2-(n1*N)가된다. N 은 n2/n1에 가장 가까운 정수.

  • 만약 n2가 부동 소수점이고, 나머지가 0이라면, 나머지의 부호는 n2의 부호가 된다. 0의 나머지는 NUMBER값에 대해 붙이지 않는다.

예제

다음 예제는 TO_BINARY_DOUBLE "Examples" 에서 생성된 float_point_demo 테이블을 이용하여서 2개의 부도 소수점을 나눠서, 산출된 나머지를 반환한다.

SELECT bin_float, bin_double, REMAINDER(bin_float, bin_double)
FROM float_point_demo;

 BIN_FLOAT BIN_DOUBLE REMAINDER(BIN_FLOAT,BIN_DOUBLE)
---------- ---------- -------------------------------
1.235E+003 1.235E+003                      5.859E-005


ROUND (number)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ROUND (number)

문법

round_number::=
Description of round_number.gif follows

그림 설명

목적

ROUND함수는 n값을 소수점 이하를 integer를 기준으로 반올림하여 반환한다. 만약 integer를 생략하면,n은 소수점을 반올림한다. 소수점 왼쪽의 정수부를 반올림하기 위해 음수값을 지정할수 있다.

n은 임의의 수치형 또는 수치형으로 변환가능한 비수치형을 지정할수 있다. 인수 integer는 정수이다. 만약 interger를 생략하면, 함수는 인수의 수치형과 같은 데이터형을 반환한다. 만약 interger를 포함하면, 함수는 NUMBER를 반환한다.

NUMBER값의 경우에, n값은 0으로부터 떨어져 반올림 할수 있다.(예를 들어, x.5가 양수일때 x+1, x.5가 음수일때 x-1). BINARY_FLOAT와 BINARY_DOUBLE값에 대하여, 함수는 가장 가까운 짝수값으로 반올림 한다.

예제

다음 예제는 첫번째 소수점으로 반올림(소수점 두번째에서 반올림).

SELECT ROUND(15.193,1) "Round" FROM DUAL;

     Round
----------
      15.2

다음 예제는 정수에서 첫번째 자리에서 반올림.

SELECT ROUND(15.193,-1) "Round" FROM DUAL;

     Round
----------
        20

다음 예제는 NUMBER값과 부동소수점 값 사이의 반올림 차이를 설명한다. NUMBER값은 절삭하고(양수값에 대하여), 부동 소수점은 가장 가까운 짝수 값으로 반올림 된다.

SELECT ROUND(1.5), ROUND(2.5) FROM DUAL;

ROUND(1.5) ROUND(2.5)
---------- ----------
         2          3

SELECT ROUND(1.5f), ROUND(2.5f) FROM DUAL;

ROUND(1.5F) ROUND(2.5F)
----------- -----------
   2.0E+000    2.0E+000


SIGN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SIGN

문법

sign::=
Description of sign.gif follows

그림 설명

목적

SIGN함수는 n의 부호를 반환한다. 이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 NUMBER형으로 변환 가능한 비수치 데이터형을 취한다.

NUMBER형태의 경우, 부호는

  • -1 if n<0

  • 0 if n=0

  • 1 if n>0

부동 소수점수(BINARY_FLOAT and BINARY_DOUBLE)의 경우, 이 함수는 수의 부호 비트를 반환한다. 부호 비트는:

  • -1 if n<0

  • +1 if n>=0 or n=NaN

예제

다음 예제는 함수(-15)가 0보다 작은 것을 나타낸다.

SELECT SIGN(-15) "Sign" FROM DUAL;

      Sign
----------
        -1


SIN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SIN

문법

sin::=
Description of sin.gif follows
Description of the illustration sin.gif

목적

SIN 함수는 인수 n의 사인(sine)값을 반환한다.(라디안으로 표현되는 각도)

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 30도의 사인(sine)값을 반환:

SELECT SIN(30 * 3.14159265359/180)
 "Sine of 30 degrees" FROM DUAL;

Sine of 30 degrees
------------------
                .5


SINH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SINH

문법

sinh::=
Description of sinh.gif follows

그림 설명

목적

SINH함수는 인수 n의 쌍곡선 사인(hyperbolic sine)을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 1의 쌍곡선 사인(hyperbolic sine)값을 반환:

SELECT SINH(1) "Hyperbolic sine of 1" FROM DUAL;

Hyperbolic sine of 1
--------------------
          1.17520119


SQRT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SQRT

문법

sqrt::=
Description of sqrt.gif follows

그림 설명

목적

SQRT함수는 n의 제곱근을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

  • 만약 n이 NUMBER인 경우, 값 n은 음수로 될수 없다. SQRT함수는 실수를 반환한다.

  • 만약 n이 실수인경우(BINARY_FLOAT or BINARY_DOUBLE),결과는 :

    • If n >= 0,

      결과는 양.

    • If n = -0, the result is -0.

    • If n < 0,

      결과는 NaN.

예제

다음 예제는 26의 제곱근을 반환:

SELECT SQRT(26) "Square root" FROM DUAL;

Square root
-----------
5.09901951


TAN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TAN

문법

tan::=
Description of tan.gif follows

그림 설명

목적

TAN 함수는 인수 n의 사인(tangent)값을 반환한다.(라디안으로 표현되는 각도)

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 135도의 탄젠트(tangent)값을 반환:

The following example returns the tangent of 135 degrees:

SELECT TAN(135 * 3.14159265359/180)
   "Tangent of 135 degrees"  FROM DUAL;

Tangent of 135 degrees
----------------------
                   - 1


TANH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TANH

문법

tanh::=
Description of tanh.gif follows

그림 설명

목적

TANH함수는 인수 n의 쌍곡선 탄젠트(hyperbolic tangent)을 반환한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 .5의 쌍곡선 탄젠트(hyperbolic tangent)값을 반환:

SELECT TANH(.5) "Hyperbolic tangent of .5"
   FROM DUAL;

Hyperbolic tangent of .5
------------------------
              .462117157


TRUNC (number)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TRUNC (number)

문법

trunc_number::=
Description of trunc_number.gif follows

그림 설명

목적

TRUNC(NUMBER)함수는 인수 n1을 소수점 자리 파라미터 n2 이하를 절삭한다.만약 인수 n2를 지정하는 않는 경우, 인수 n1의 소수점 이하를 절삭한다. 만약 인수 n2가 음수인 경우는, 소수점 왼쪽의 n2자리(정수부분)에서 절삭한다.

이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 만약 인수가 BINARY_FLOT 형태인 경우에는, 이 함수는 BINARY_DOUBLE 타입을 반환한다. 이 외에는 인수와 같은 수치 데이터형을 반환한다.

예제

다음 예제는 수치를 절삭(두번째 예제는 정수부 일의 자리에서 절삭):

SELECT TRUNC(15.79,1) "Truncate" FROM DUAL;

  Truncate
----------
      15.7

SELECT TRUNC(15.79,-1) "Truncate" FROM DUAL;

  Truncate
----------
        10


WIDTH_BUCKET

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

WIDTH_BUCKET

문법

width_bucket::=
Description of width_bucket.gif follows

그림 설명

목적

WIDTH_BUCKET함수는 동일한 넓이를 갖는 히스토그램을 생성한다. (동일한 높이를 갖는 히스토그램을 생성하는 NTILE함수를 비교) 이론적으로 각 버킷이 실수 라인의 closed-open 간격이다. 예를 들어, 10은 포함하고 20은 배제되는것을 나타내기 위해서 버킷은 10.00과 19.99... 사이의 스코어를 할당할수 있다. 이것은 종종 [10,20)으로 나타낸다.

주어진 표현에 대해서, WIDTH_BUCKET은 이 식의 값이 평가된 후에 해당하는 버킷 수를 반환한다.

  • expr 은 히스트그램이 생성되는 표현이다. 이 식은 수치, Datetime값 또는 암묵적으로 수치 또는 Datetime값으로 변환가능한 값을 평가할 수있다. 만약 expr이 Null로 평가되면, 식은 Null을 반환한다.

  • min_value 과 max_value 은 expr에 대하여 허용가능한 범위의 끝점을 결정하는 표현이다. 이 표현의 양쪽 모두는 수치 또는 Datetime으로 평가될 필요가 있어서, 모두 Null로 평가되지는 않는다.

  • num_buckets 은 버킷의 수를 예측하는 상수를 결정하는 표현이다. 이 표현은 양의 정수로 평가될 필요가 있다.

오라클 데이터 베이스는 필요에 따라서 0의 하위 버킷과 num_buckets+1의 상위 버킷을 생성한다. 이런 버킷은 min_value보다 적거나 max_value 값보다 큰 값을 처리해, endpoints의 타당성 체크에 유용하다.

참고

http://www.soqool.com/servlet/board?cmd=view&cat=100&subcat=1030&seq=328

  WIDTH_BUCKET 함수가 만드는 각각의 범위구간(bucket이라고 한다)은 실수영역에서 반개구간(closed-open interval, half-open interval)을 형성한다.
  예를 들어, 하나의 범위구간이 10에서 20사이라고 하면, 실제로는 [10, 20)와 같은 범위 즉 10보다 크거나 같고 20보다 작은(x>=10 and x<20) 범위를 만드는 것이다.

  첫번째 파라미터인 expr은 히스토그램이 만들어질 표현식이며, 이 값이 NULL일 경우 결과값도 NULL이 된다.

  두번째,세번째 파라미터 min_value, max_value는 expr을 구간으로 나눌때 최소값, 최대값을 의미하며, NULL값이 올 수 없다.

  네번째 파라미터 num_buckets는 만들 구간(bucket)의 수를 의미하며, 양수이어야 한다.

  만약 해당 항목의 값이 min_value 보다 작으면 0을 반환하고, max_value보다 크거나 같으면(같을때도 포함된다. 반개구간이므로) num_buckets+1값을 반환한다.

예제

다음 예제는 샘플 테이블 oe.customers에서 스위스에서 고객의 credit_limit열에서 10 버킷의 히스토그램을 생성하고, 각 고객에 대한 버킷 수("Credit Group")를 반환한다. 최대치 값보다 큰 신용 한도액을 가지는 고객은 상위 버킷 11에 할당된다.

SELECT customer_id, cust_last_name, credit_limit,
       WIDTH_BUCKET(credit_limit, 100, 5000, 10) "Credit Group"
FROM customers WHERE nls_territory = 'SWITZERLAND'
ORDER BY "Credit Group";

CUSTOMER_ID CUST_LAST_NAME       CREDIT_LIMIT Credit Group
----------- -------------------- ------------ ------------
        825 Dreyfuss                      500            1
        826 Barkin                        500            1
        853 Palin                         400            1
        827 Siegel                        500            1
        843 Oates                         700            2
        844 Julius                        700            2
        835 Eastwood                     1200            3
        840 Elliott                      1400            3
        842 Stern                        1400            3
        841 Boyer                        1400            3
        837 Stanton                      1200            3
        836 Berenger                     1200            3
        848 Olmos                        1800            4
        849 Kaurusmdki                   1800            4
        828 Minnelli                     2300            5
        829 Hunter                       2300            5
        852 Tanner                       2300            5
        851 Brown                        2300            5
        850 Finney                       2300            5
        830 Dutt                         3500            7
        831 Bel Geddes                   3500            7
        832 Spacek                       3500            7
        838 Nicholson                    3500            7
        839 Johnson                      3500            7
        833 Moranis                      3500            7
        834 Idle                         3500            7
        845 Fawcett                      5000           11
        846 Brando                       5000           11
        847 Streep                       5000           11


CHR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CHR

문법

chr::=
Description of chr.gif follows

그림 설명

목적

CHR함수는 데이터베이스 문자 세트 또는 각국어 문자세트(NCHAR_CS를 지정시)인 안의 VARCHAR2 값으로 n과 동등한 2진수를 가지는 문자를 반환한다. 보통 아스키 코드를 문자로 변환해서 반환한다.

싱글 바이트 문자 세트의 경우, 만약 n>256인 경우, 오라클 데이터베이스는 n mod(나머지) 256의 동일한 이진수를 반환한다. Multi 바이트 문자 세트의 경우, 인수 n은 하나의 전체적 코드 포인트를 해결할 필요가 있다. 유효하지 않은 코드 포인트는 검증되지 않고, 유효하지 않은 코드 포인트를 지정했을 경우의 결과는 예측 불능이다.

이 함수는 NUMBER값을 인수 또는암묵적으로 NUMBER형으로 변환가능한 임의의 값을 취하여, 문자를 반환한다.

예제

다음 예제는 데이터베이스 문자 세트가 WE8ISO8859P1로 정의되는 ASCII-베이스 머신으로 실행되고 있다:

SELECT CHR(67)||CHR(65)||CHR(84) "Dog" FROM DUAL;

Dog
---
CAT

문자 세트가 WE8EBCDIC1047의 EBCDIC-베이스의 머신에서 같은 결과를 산출하기 위해서는, 다음과 같은 수정이 필요하다:

SELECT CHR(195)||CHR(193)||CHR(227) "Dog"
   FROM DUAL;

Dog
---
CAT


CONCAT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CONCAT

문법

concat::=
Description of concat.gif follows

그림 설명

목적

CONCAT 함수는 char1과 char2를 연결하여 반환한다. char1과 char2은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB 타입중에 하나이다. 문자열은 char1과 같은 타입이 반환된다. 즉, 결과 문자열의 타입은 인수의 문자열에 의존한다.

두개의 다른 형태의 연결시, 무손실 변환 결과인 타입이 반환된다. 그러므로, 만약 인수중에 하나가 LOB인 경우에는, 반환된 값은 LOB 타입이다. 만약, 인수중에 하나가 각국어 타입인 경우에는, 반환값은 각국어 데이터 형이 된다.

  • CONCAT(CLOB, NCLOB) 은 NCLOB 타입을 반환

  • CONCAT(NCLOB, NCHAR)은 NCLOB 타입을 반환

  • CONCAT(NCLOB, CHAR) 은 NCLOB 타입을 반환

  • CONCAT(NCHAR, CLOB) 은 NCLOB 타입을 반환

이 함수는 연결 연산자(||) 와 동등하다. 이 함수는 연결될 값에 공백이 있을때 유용하다.(공백을 생략하지 않음)

예제

다음 예제는 세개의 문자열을 연결한다.

SELECT CONCAT(CONCAT(last_name, '''s job category is '),
      job_id) "Job"
   FROM employees
   WHERE employee_id = 152;

Job
------------------------------------------------------
Hall's job category is SA_REP


INITCAP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

INITCAP

문법

initcap::=
Description of initcap.gif follows

그림 설명

목적

INITCAP함수는 입력 문자열 중에서 각 단어의 첫 글자를 대문자로 나머지는 소문자로 변환하여 반환한다. 공백 또는 영문,숫자 이외의 문자는 단어를 구분하는 구분자이다.

인수 CHAR는 CHAR,VARCHAR2,NCHAR,NVARCHAR2형 이다.반환되는 값은 인수와 같은 데이터 형이다. 이 함수는 CLOB 데이터를 직접적으로 지원하지 않는다. 그러나, 암묵적 데이터 변환을 통해서 인수로 전달할수 있다.

예제

다음 예제는 문자열에서 각 단어의 첫 글자를 대문자로 전환:

SELECT INITCAP('the soap') "Capitals" FROM DUAL;

Capitals
---------
The Soap


LOWER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LOWER

문법

lower::=
Description of lower.gif follows

그림 설명

목적

LOWER 함수는 입력된 문자열을 소문자로 변환한다.

인수 char은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB형이다. 반환된 값은 인수 char과 같은 데이터 형이다.

예제

형다은 예제는 문자열을 소문자로 변환한다.

SELECT LOWER('MR. SCOTT MCMILLAN') "Lowercase"
   FROM DUAL;

Lowercase
--------------------
mr. scott mcmillan


LPAD

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LPAD

문법

lpad::=
Description of lpad.gif follows

그림 설명

목적

LPAD함수는 지정된 자리수 n으로부터 expr1을 채우고,왼편의 남은 공간에 expr1을 채운다. 이 함수는 쿼리의 출력 서식에 대하여 유용하다.

인수 expr1 과 인수 expr2의 데이터 형식은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB이다. 반환되는 문자열은 VARCHAR2데이터형이고, 인수 expr1과 같은 문자이다. 인수 n은 숫자 정수 또는 암묵적으로 정수로 변환가능한 값이다.

만약 expr2를 지정하지 않는다면, 기본값은 Blank이다. 만약 expr1이 n보다 크다면, 이 함수는 n에 적합한 expr1의 일부를 반환한다.

인수n은 터미널 스크린에서 표시되는 것과 같은 반환값의 전체 Length이다. 대부분의 문자세트에서, 이것은 반환되는 값에서 문자의 숫자이다. 그러나 multibyte문자세트에서는, 문자열의 표시되는 Length가 문자열에서 문자의 숫자로부터 다를수있다.

예제

다음 예제는 문자열의 좌측에 '*.'을 채운다.

SELECT LPAD('Page 1',15,'*.') "LPAD example"
   FROM DUAL;

LPAD example
---------------
*.*.*.*.*Page 1


LTRIM

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LTRIM

문법

ltrim::=
Description of ltrim.gif follows

그림 설명

목적

LTRIM함수는 문자열 char 좌측으로부터 set으로 지정된 모든 문자를 제거한다. 만약 set이 지정되지 않았다면, 디폴트로 한개의 공백이 지정된다. 만약 char이 문자열이라면, 따옴표를 해야만한다. 오라클 데이터 베이스는 char 첫 문자에서부터 스캔을 하여 set으로 지정된 모든 문자를 삭제한다. 지정한 set이외의 문자 발견시 결과를 반환한다.

char과 set의 데이터 형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB이다.

참 조 :

RTRIM

예제

다음 예제는 좌측에서부터 'x'와'y' 문자를 제거한다. 대문자 'X'에서 반환한다.

SELECT LTRIM('xyxXxyLAST WORD','xy') "LTRIM example"
   FROM DUAL;

LTRIM example
------------
XxyLAST WORD


NCHR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NCHR

문법

nchr::=
Description of nchr.gif follows

그림 설명

목적

NCHR 함수는 유니코드 문자를 반환.

NCHR함수는 각국어 문자 세트에서 number와 동등한 바이너리를 가지는 문자를 반환한다. 이 함수는 USING NCHAR_CS구문을 가진 CHR함수와 동등하다.

이 함수는 인수로써 NUMBER값 또는 암묵적으로 NUMBER로 변환 가능한 값을 취하고, 문자를 반환한다.

참 조 :

CHR

예제

다음 에제는 NCHAR 문자 187번을 반환한다.

SELECT NCHR(187) FROM DUAL;

NC
--
>

SELECT CHR(187 USING NCHAR_CS) FROM DUAL;

CH
--
>


NLS_INITCAP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NLS_INITCAP

문법

nls_initcap::=
Description of nls_initcap.gif follows

그림 설명

목적

NLS_INITCAP함수는 각 단어의 처음 문자를 대문자로, 나머지 문자를 소문자로 변환하여 char를 반환한다.단어는 공백 또는 영숫자 이외의 문자로 단락을 구분된다.

char과 'nlsparam'의 데이터 형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2를 취한다. 문자열은 VARCHAR2 데이터형을 반환하고, char과 같은 문자 세트이다.

'nlsparam'의 값은 이 형태를 가질수 있다.

'NLS_SORT = sort'

sort는 언어상 소트 순서 또는 BINARY 중에 하나이다. 언어 소트 순서는 문자 변환을 위해서 특별한 언어 요건을 처리한다. 이러한 요구는 char과 다른 길이의 값을 반환하는 경우가 있다. 만약 'nlsparam'을 생략하면, 이 함수는 세션에 대하여 기본적 소트 순서를 이용한다.

이 함수는 CLOB 데이터를 직접적으로 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 변환을 통해서 인수로 전달될 수 있다.

NLS_INITCAP 함수는 입력 문자열 중에서 각 단어의 첫 글자를 대문자로 나머지는 소문자로 변환한 스트링을 반환한다.
단어의 white space나 character가 알파뉴메릭이 아니더라도 상관없다.nlsparam는 ‘nls_sort = sort'와 같은 형식을 가지며,
여기서 sort는 linguistic sort sequence나 binary중의 하나이다.

예제

다음 예제는 함수로부터 언어 소트 순서가 다른 값을 되돌리는지 보인다.

SELECT NLS_INITCAP
       ('ijsland') "InitCap" FROM DUAL;

InitCap
-------
Ijsland

SELECT NLS_INITCAP
       ('ijsland', 'NLS_SORT = XDutch') "InitCap"
FROM DUAL;

InitCap
-------
IJsland


NLS_LOWER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NLS_LOWER

문법

nls_lower::=
Description of nls_lower.gif follows

그림 설명

목적

NLS_LOWER함수는 모든 문자를 소문자로 변환하여 반환한다.

char과 nlsparam의 데이터형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB중에 하나이다. 반환되는 문자형은 Varchar2 데이터 형이거나, char과 같은 문자형 세트이다.

'nlsparam'은 NLS_INITCAP함수와 같은 형태와 목적을 가질수 있다.

단어의 white space나 character가 알파뉴메릭이 아니더라도 상관없다. nlsparam는 ‘nls_sort = sort'와 같은 형식을 가지며, 여기서 sort는 linguistic sort sequence나 binary중의 하나이다.

예제

다음 문장은 XGerman문자 소트 순서를 이용하여 문자열 'citta'를 반환한다.

SELECT NLS_LOWER
   ('CITTA''', 'NLS_SORT = XGerman') "Lowercase"
   FROM DUAL;

Lowerc
------
citta'


NLSSORT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NLSSORT

문 법

nlssort::=
Description of nlssort.gif follows

그림 설명

목적

NLSSORT함수는 char 소트에 이용되는 bytes의 문자열을 반환한다.

char과 'nslparam'의 데이터형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2를 취한다. 반환되는 문자열은 RAW데이터형이다.

'nlsparam'의 값은 이 형태를 가질수 있다.

'NLS_SORT = sort'

sort는 언어상 소트 순서 또는 BINARY 중에 하나이다. 만약 'nlsparam'을 생략하면, 이 함수는 세션에 대하여 기본적 소트 순서를 이용한다. 만약 BINARY를 지정하면, 이 함수는 char을 반환한다.

만약 'nlsparam'을 지정했다면, 접미사 -ai를 추가하여 accent-insensitive(엑센트 기호유무가 필요없는) 소트를 하거나,-ci를 추가하여 case-insensitive(대소문구분이 없는) 소트를 실시할수있다.

accent- 와 case-insensitive 소트에 대해서는 Oracle Database Globalization Support Guide 참조.

이 함수는 CLOB 데이터를 직접적으로 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 변환을 통해서 인수로 전달될 수 있다.

NLSSORT 함수는 입력 문자열을 소팅하여 문자열을 반환. 단어의 withe space나 문자가 알파 문자열이 아니더라도 상관없다. nlsparam는 ‘nls_sort = sort'와 같은 형식을 가지며, 여기서 sort는 linguistic sort sequence나 binary중의 하나이다.

예제

이 함수는 문자열의 이진수 값 보다는 언어 소트 기준을 기본으로 한 소트와 비교를 지정할수 있다. 다음 예제는 2개의 값을 포함한 test 테이블을 생성하고, 어떻게 값이 NLSSORT함수에 의해 순서화 되어지는가를 볼수있다.

CREATE TABLE test (name VARCHAR2(15));
INSERT INTO test VALUES ('Gaardiner');
INSERT INTO test VALUES ('Gaberd');
INSERT INTO test VALUES ('Gaasten');

SELECT * FROM test ORDER BY name;

NAME
---------------
Gaardiner
Gaasten
Gaberd

SELECT * FROM test ORDER BY NLSSORT(name, 'NLS_SORT = XDanish');

NAME
---------------
Gaberd
Gaardiner
Gaasten

다음 예제는 비교 연산으로 NLSSORT 함수를 이용하는 방법을 보인다.

The following example shows how to use the NLSSORT function in comparison operations:

SELECT * FROM test WHERE name > 'Gaberd';

no rows selected

SELECT * FROM test WHERE NLSSORT(name, 'NLS_SORT = XDanish') >
NLSSORT('Gaberd', 'NLS_SORT = XDanish');

NAME
---------------
Gaardiner
Gaasten

만약 빈번하게 동일한 언어 소트 기준을 사용하는 비교 연산으로 이용한다면, 더 효율적 대안을 고려하자: NLS_COMP파라미터(데이터 베이스용이나 현재 세션 어느쪽이든)에
ANSI를 설정하고, 원하는 소트 기준으로 세션에 대해 NLS_SORT 파라미터를 설정한다. 오라클 데이터 베이스는 현재의 세션 에서 모든
소팅과 비교 연산에 대하여 기본적으로 소트 기준을 이용한다.
ALTER SESSION SET NLS_COMP = 'ANSI';
ALTER SESSION SET NLS_SORT = 'XDanish';

SELECT * FROM test WHERE name > 'Gaberd';

NAME
---------------
Gaardiner
Gaasten

  Go to previous page

Previous

  Go to next page

Next

2006년 백 승 민 제작하였답니다.

(http://cafe.daum.net/statsas
, http://statwith.pe.kr)


NLS_UPPER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NLS_UPPER

문법

nls_upper::=
Description of nls_upper.gif follows

그림 설명

목적

NLS_UPPER함수는 입력 문자열을 모두 대문자로 변환한 문자열을 반환한다.

char과 'nlsparam'의 데이터 형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB중에 하나이다. 반환되는 문자열은 VARCHAR2이고, char과 같은 문자 세트로 반환된다.

'nlsparam'은 NLS_INITCAP함수와 같은 형태와 목적을 가진다.

예제

다음 예제는 모든 문자를 대문자로 변환한다.

SELECT NLS_UPPER ('große') "Uppercase"
     FROM DUAL;

Upper
-----
GROßE

SELECT NLS_UPPER ('große', 'NLS_SORT = XGerman') "Uppercase"
   FROM DUAL;

Upperc
------
GROSSE

참 조 :

NLS_INITCAP


REGEXP_REPLACE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REGEXP_REPLACE

문법

regexp_replace::=
Description of regexp_replace.gif follows

그림 설명

목적

지정한 정규 표현을 만족하는 부분을, 지정한 다른 문자열로 치환합니다.복잡한 치환/검색 조작을 가능하게 합니다

REGEXP_REPLACE함수는 정규 표현 패턴에 대하여 문자열을 검색할수 있도록 REPLACE함수의 기능을 확장한 것이다. 기본적으로, 함수는 source_string을 정규 표현 패턴의 모든 발생하는 문자를 replace_string으로 대체하여 반환한다. 반환되는 문자열은 source_char와 같은 n 문자 세트이다. 함수는 만약 첫번째 인수가 LOB가 아니라면 VARCHAR2를 반환하고, 만약 첫번째 인수가 LOB라면, CLOB를 반환한다.

이 함수는 POSIX 정규 표현 규격과 유니코드 정규 표현 가이드 라인을 따른다.

  • source_string 는 검색값으로써 전달되는 문자식이다. 일반적으로 문자열이고, CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB중의 데이터형이다.

  • pattern 은 정규 표현식이다. 일반적으로 텍스트 문자이고, CHAR,VARCHAR2,NCHAR,NVARCHAR2 중의 하나이다. 512byte를 지정할수 있다. 만약 pattern의 데이터형이 source_string의 데이터형과 다르다면, 오라클 데이터 베이스는 pattern을 source_string의 데이터형으로 변환한다. pattern에서 지정할수 있는 연산자의 리스트는  Appendix C, " Oracle Regular Expression Support" 참조.

  • replace_string 는 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB중에 하나의 데이터형이다. 만약 replace_string가 CLOB 또는 NCLOB라면, 오라클은 replace_string를 32K로 잘라버린다. replace_string는 최대 500개의 후방참조를 형태 \n에서 부분정규표현으로 가질수 있다. n은 1에서 9까지의 수치이다. 만약 n이 replace_string에서 backslash라면, escape 문자(\\)를 선행해야한다. 후방참조(backreference)표현에 대한 더 많은 정보는 " Oracle Regular Expression Support", Table C-1 참조.

  • position 은 오라클이 검색을 시작하는 source_string의 문자 위치를 나타내는 양의 정수이다. 기본값은 1이며, 오라클이 source_string의 첫번째 문자에서 검색을 시작하는것을 의미한다.

  • occurrence 은 치환 조작의 발생을 나타내는 음이 아닌 정수이다.

    • 만약 0을 지정하면, 일치하는 모든 발생을 대체한다.

    • 만약 양의 정수 n을 지정하면, 오라클은 n번째 발생으로 대체한다.

  • match_parameter 는 함수의 기본적으로 검색 행동을 하기 위한 텍스트 문자이다. 이 인수는 검색 처리에 영향을 주고, replace_string에는 영향을 주지 않는다. match_parameter에 대한 따르는 값을 한개 이상을 지정할수 있다.

    • 'i'는 대소문자를 구별하지 않고 검색한다.

    • 'c'는 대소문자를 구별하여 검색한다.

    • 'n'은 새줄 문자와 일치하는 match-any-character문자인 period(.)을 허용한다. 만약 이 파라미터를 생략하면, 피어리드는 새줄 문자와 일치하지 않는다. (http://pcrc.hongik.ac.kr/~progman/docs/regexp/node6.html)

    • 'm'는 다중 라인과 같은 소스 문자열을 처리한다. 오라클은 소스 문자에 임의의 라인에 선두와 끝으로써 ^과 $을 해석한다. 만약 이 파라미터를 생략하면, 오라클은 단일행으로써 소스 문자열을 처리한다.

    만약 복수의 모순된 값을 지정하면, 오라클은 마지막 값을 이용한다. 예를들어, 만약 'ic'를 지정하면, 오라클은 대소문자를 구별하는 검색을 한다. 만약 위에서 보이는것과 다른 문자를 지정하면, 오라클은 에러를 발생한다.

    만약 match_parameter를 생략하면,

    • 기본적 대소문자 구별은 NLS_SORT 파라미터의 값에 의해 정의 된다.

    • period(.)은 새줄문자와 일치하지 않는다.

    • 소스 문자열은 단일행으로써 취급된다.

      참 조 :

      REPLACE

      http://blog.empas.com/phpaspjsp/read.html?a=14672699&c=1232545

      http://www.oracle.com/technology/global/kr/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html

      http://www.oracle.com/technology/global/kr/oramag/webcolumns/2003/techarticles/rischert_regexp_pt2.html

      http://blog.empas.com/kk760105/17154912

      도서 : Oracle Regular Expressions 참조

예제

다음 예제는 phone_number를 조사하여, 패턴 xxx.xxx.xxxx를 찾는다. 오라클은 패턴 (xxx) xxx-xxxx으로 서식을 변경한다.

SELECT
  REGEXP_REPLACE(phone_number,
                 '([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})',
                 '(\1) \2-\3') "REGEXP_REPLACE"
  FROM employees;

REGEXP_REPLACE
--------------------------------------------------------------------------------
(515) 123-4567
(515) 123-4568
(515) 123-4569
(590) 423-4567
. . .

다음 예제는 country_name을 조사한다. 오라클은 문자열내에서 NULL이 아닌 각 문자 뒤에 공백을 삽인한다.
SELECT
  REGEXP_REPLACE(country_name, '(.)', '\1 ') "REGEXP_REPLACE"
  FROM countries;

REGEXP_REPLACE
--------------------------------------------------------------------------------
A r g e n t i n a
A u s t r a l i a
B e l g i u m
B r a z i l
C a n a d a
. . .
다음 예제는 string를 조사하고, 2이상의 공백을 찾는다. 오라클은 2 이상의 공백을 단일 공백으로 대체한다.
SELECT
  REGEXP_REPLACE('500   Oracle     Parkway,    Redwood  Shores, CA',
                 '( ){2,}', ' ') "REGEXP_REPLACE"
  FROM DUAL;

REGEXP_REPLACE
--------------------------------------
500 Oracle Parkway, Redwood Shores, CA

특정 문자열을 다른 문자열로 대체하는 기존의 REPLACE SQL 함수의 기능을 잠시 되짚어 보겠습니다. 데이터의 텍스트에 필요 이상의 공백 기호가 존재하는 상황에서, 이를 단일 공백 기호로 대체하는 경우를 가정해 봅시다 REPLACE 함수를 사용할 때에는 대체할 공백 기호의 숫자를 정확하게 지정해야 합니다. 하지만, 필요 없는 공백의 수가 일정하리라는 보장은 없습니다. 아래 예는 Joe와 Smith사이에 3 개의 공백 기호가 존재하는 경우를 검색하고 있습니다. REPLACE 함수의 매개변수는 두 개의 공백 기호를 하나의 공백 기호로 대체할 것을 명시하고 있습니다. 하지만 Joe와 Smith 사이에 3 개의 공백 기호가 존재하는 경우에는 여전히 필요 없는 공백이 하나 남게 됩니다.

SELECT REPLACE('Joe   Smith','  ', ' ')
       AS replace
FROM dual

REPLACE
---------
Joe Smith

REGEXP_REPLACE 한층 개선된 문자열 대체 기능을 제공합니다. 그 사용법은 표 9에서 설명되고 있습니다. 아래 쿼리는 두 개 또는 그 이상의 공백 기호를 하나의 공백 기호로 대체합니다. ( )서브표현식은 하나의 공백 기호를 포함하며  {2,}의 조건에 의해 지정된 대로 2 회 또는 그 이상 반복되는 조건을 명시합니다.

SELECT REGEXP_REPLACE('Joe   Smith',
       '( ){2,}', ' ')
       AS RX_REPLACE
FROM dual

RX_REPLACE
----------
Joe Smith


REGEXP_SUBSTR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REGEXP_SUBSTR

문법

regexp_substr::=
Description of regexp_substr.gif follows

그림 설명

목적

지정한 정규 표현을 만족하는 부분 문자열을 리턴합니다.

REGEXP_SUBSTR함수는 정규 표현 패턴에 대하여 문자열을 검색할수 있도록 REPLACE함수의 기능을 확장한 것이다. REGEXP_INSTR과 유사하나, substring의 위치를 반환하는 것이 아니라, substring 자체를 반환한다. 이 함수는 만약 일치 문자열의 내용은 필요하고, 소스 문자열내에서 위치는 필요없는 경우에 유용하다. 함수는 source_string으로써 같은 문자 세트안에서 VARCHAR2 또는 CLOB 데이터와 같은 문자열을 반환한다.

이 함수는 POSIX 정규 표현 규격과 유니코드 정규 표현 가이드 라인을 따른다.

  • source_string 는 검색값으로써 전달되는 문자 표현이다. 일반적으로 문자열이고, CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB데이터형중에 하나이다.

  • pattern 은 정규 표현이다. 일반적으로 텍스트 문자이고, CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터형 중에 하나이다. 512Byte를 지정할수 있다. 만약 pattern의 데이터형이 source_string 데이터형과 다르면, 오라클 데이터 베이스는 pattern을 source_string의 데이터형으로 변환한다. pattern에서 지정할수 있는 연산자의 리스트는  Appendix C, " Oracle Regular Expression Support" 참조.

  • position 은 오라클이 검색을 시작하는 source_string의 문자 위치를 나타내는 양의 정수이다. 기본값은 1이며, 오라클이 source_string의 첫번째 문자에서 검색을 시작하는것을 의미한다.

  • occurrence 은 source_string에서 pattern의 발생을 나타내는 양의 정수이다. 기본값은 1이고, 오라클이 pattern의 처음 발생하는것을 검색하는것을 의미한다.

  • match_parameter 은 함수의 기본적 일치하는 행동을 변경하기 위한 텍스트 문자이다. match_parameter에 대한 다음 값의 하나 이상을 지정할수 있다.

    • 'i'는 대소문자를 구별하지 않는다.

    • 'c'는 대소문자를 구별한다.

    • 'n'은 새줄 문자와 일치하는 match-any-character문자인 period(.)을 허용한다. 만약 이 파라미터를 생략하면, 피어리드는 새줄 문자와 일치하지 않는다. (http://pcrc.hongik.ac.kr/~progman/docs/regexp/node6.html)

    • 'm'는 다중 라인과 같은 소스 문자열을 처리한다. 오라클은 소스 문자에 임의의 라인에 선두와 끝으로써 ^과 $을 해석한다. 만약 이 파라미터를 생략하면, 오라클은 단일행으로써 소스 문자열을 처리한다.

    만약 복수의 모순된 값을 지정하면, 오라클은 마지막 값을 이용한다. 예를들어, 만약 'ic'를 지정하면, 오라클은 대소문자를 구별하는 검색을 한다. 만약 위에서 보이는것과 다른 문자를 지정하면, 오라클은 에러를 발생한다.

    만약 match_parameter를 생략하면,

    • 기본적 대소문자 구별은 NLS_SORT 파라미터의 값에 의해 정의 된다.

    • period(.)은 새줄문자와 일치하지 않는다.

    • 소스 문자열은 단일행으로써 취급된다.

    참 조 :

    SUBSTR and REGEXP_INSTR

    http://blog.empas.com/phpaspjsp/read.html?a=14672699&c=1232545

    http://www.oracle.com/technology/global/kr/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html

    http://www.oracle.com/technology/global/kr/oramag/webcolumns/2003/techarticles/rischert_regexp_pt2.html

    http://blog.empas.com/kk760105/17154912

    도서 : Oracle Regular Expressions 참조

예제

다음 예제는 string를 조사하여, 콤마에 의해 단락지어진 처음 substring을 검색한다. 오라클 데이터 베이스는 콤마에 의해 따르는 콤마 문자가 아닌 1개 이상의 문자에 따르는 콤마를 검색한다. 오라클은 앞뒤 콤마를 포함한 substring을 반환한다.

SELECT REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA',
                     ',[^,]+,') "REGEXPR_SUBSTR"
FROM DUAL;

REGEXPR_SUBSTR
-----------------
, Redwood Shores,

다음 예제는 string을 조사하여, 하나이사의 영숫자의 substring과 옵션으로 period(.)를 따르는 http://를 검색한다. 오라클은 http:// 와 slash(/) 또는 문자열의 끝 사이에 이 substring의 최소 3, 최대 4 발생을 검색한다.

SELECT
  REGEXP_SUBSTR('http://www.oracle.com/products',
                'http://([[:alnum:]]+\.?){3,4}/?') "REGEXP_SUBSTR"
  FROM DUAL;

REGEXP_SUBSTR
----------------------
http://www.oracle.com/

REGEXP_SUBSTR 함수는 SUBSTR 함수와 마찬가지로 문자열의 일부를 추출합니다. 표 8은 새로운 함수의 사용법을 설명하고 있습니다. 아래 예제에서는 [^,]*, 패턴에 매치되는 문자열이 반환됩니다. 정규 표현식은 공백에 이어 사용된 쉼표를 검색하고, 쉼표가 아닌 문자가 0 회 또는 그 이상 반복되는 패턴을 검색([^,]*)한 후 마지막으로 또 다른 쉼표를 검색합니다. 이 패턴은 쉼표로 구분된 문자열(comma-separated values)과 유사한 배열을 갖습니다.

SELECT REGEXP_SUBSTR('first field, second field , third field', ', [^,]*,')
  FROM dual

REGEXP_SUBSTR('FIR
------------------
, second field   ,


REPLACE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REPLACE

문법

replace::=
Description of replace.gif follows

그림 설명

목적

REPLACE 함수는 char에서 search-string이 발생하는 모든 것을 replacement_string으로 변경한다. 만약 replacement_string가 생략되거나 Null값이면, char에서 search_string을 제거한다. 만약 search_string가 Null이면, char을 그대로 반환한다.

Search_string,replacement_string,char의 데이터형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB이다. 문자열은 Char과 같은 문자세트가 반환된다. 만약 첫번째 인수가 LOB가 아니면 VARCHAR2가 반환되고, 만약 첫번째 인수가 LOB라면 LOB가 반환된다.

REPLACE함수는 TRANSLATE함수와 비슷하다. TRANSLATE함수는 단일 문자를 1:1로 치환하고, REPLACE함수는 1개의 문자열을 치환할 뿐아니라 삭제를 할수있다.

참 조 :

TRANSLATE

예제

다음 예제는 J를 BL로 대체한다.:

SELECT REPLACE('JACK and JUE','J','BL') "Changes"
     FROM DUAL;

Changes
--------------
BLACK and BLUE


RPAD

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

RPAD

문법

rpad::=
Description of rpad.gif follows

그림 설명

목적

RPAD함수는 인수 expr1 오른편으로 인수 expr2로 지정한 문자를 길이 필요에 따라 반복하여 n만큼 붙여준다. 이 함수는 쿼리의 출력 포맷을 맞추는데 도움이 된다.

expr1과 expr2의 데이터 형식은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB이다. 인수 n은 NUMBER 정수이거나, NUMBER 정수로 암묵적으로 변환될수 있는 값이다.

만약 expr2를 지정하지 않았다면, 기본적으로 공백 1개가 된다. 만약 expr1이 n보다 긴경우에는, 함수는 n에 적합한 expr1의 일부를 반환한다.

인수 n은 터미날 스크린에 표시되는 반환값의 전체 길이이다. 대부분 문자 세트에서, 반환값에서 문자의 수이다. 그러나, 멀티바이트 문자 세트에서는 문자열의 표시되는 길이가 문자열에서 문자의 수와 다를수 있다.

예 제

다음 예제는 공백에 * 을 붙여서 급여액의 간단한 그래프를 생성한다:

SELECT last_name, RPAD(' ', salary/1000/1, '*') "Salary"
   FROM employees
   WHERE department_id = 80
   ORDER BY last_name;

LAST_NAME                 Salary
------------------------- ---------------
Abel                       **********
Ande                       *****
Banda                      *****
Bates                      ******
Bernstein                  ********
Bloom                      *********
Cambrault                  **********
Cambrault                  ******
Doran                      ******
Errazuriz                  ***********
Fox                        ********
Greene                     ********
Hall                       ********
Hutton                     *******
Johnson                    *****
King                       *********
. . .


RTRIM

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

RTRIM

문법

rtrim::=
Description of rtrim.gif follows

그림 설명

목적

RTRIM함수는 인수 char의 오른쪽 끝에서 부터 set으로 지정된 모든 문자를 제거한다. 이 함수는 쿼리의 출력 포맷에 유용하다.

만약 set을 지정하지 않았다면, 기본적으로 공백 한개가 지정된다. 만약 char이 문자 리터럴이라면, 작은 따옴표로 둘러 쌓아주어야만한다. RTRIM함수는 LTRIM과 유사하다.

char과 set의 데이터 형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB이다.

참 조 :

LTRIM

예제

다음 예제는 문자열의 오른쪽편으로부터 '/=.'을 제거한다:

SELECT RTRIM('BROWNING: ./=./=./=./=./=.=','/=.') "RTRIM example" FROM DUAL;

RTRIM exam
----------
BROWNING:


SOUNDEX

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SOUNDEX

문법

soundex::=
Description of soundex.gif follows

그림 설명

목적

SOUNDEX함수는 char의 음성 표현을 가지는 문자열을 반환한다. 이 함수는 스펠링이 틀려도 발음이 유사한 영단어를 비교할수 있다.

음성 표현은 "The Art of Computer Programming, Volume 3: Sorting and Searching"(Donald E.Knuth저)에서 다음과 같이 정의되고 있다.

  1. 문자열의 최초 문자를 남겨서 a,e,h,i,o,u,w,y의 문자가 나왔을 경우에는 모두 삭제한다.

  2. 남은 문자(첫 문자 후에)다음과 같이 숫자를 할당한다.

    b, f, p, v = 1
c, g, j, k, q, s, x, z = 2
d, t = 3
l = 4
m, n = 5
r = 6

  3. 만약 같은 수치를 가지는 2개 이상의 문자가 오리지날 이름에서 인접해있거나(첫번째 스텝전) 또는 h와 w 사이의 문자를 제외하고 인접해 있다면, 최초 문자 이외의 모든 문자를 삭제한다.

  4. 0을 붙여서 최초의 4바이트를 반환한다.

char은 CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터 형이다. 반환되는 값은 char과 같은 데이터형이다.

이 함수는 CLOB데이터를 직접 지원하지 않는다. 다만, 암묵적인 데이터 변환을 통해서 인수로써 전달될수 있다.

예제

다음 예제는 "Smyth"와 같은 음성 표현을 가지는 종업원을 반환한다.

SELECT last_name, first_name
     FROM hr.employees
     WHERE SOUNDEX(last_name)
         = SOUNDEX('SMYTHE');

LAST_NAME  FIRST_NAME
---------- ----------
Smith      Lindsey
Smith      William


SUBSTR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SUBSTR

문법

substr::=
Description of substr.gif follows

그림 설명

목적

SUBSTR함수는 문자열 Char에서 position 문자 위치로부터 substring_length 문자 길이만큼 문자열을 추출하여 반환한다. SUBSTR함수는 입력 문자 세트에 의해 정의된 문자를 이용하여 길이를 측정한다. SUBSTRB함수는 문자 대신에 바이트를 사용한다. SUBSTRC함수는 UNICODE를 사용한다. SUBSTR2함수는 UCS2 코드 포인트를 사용한다. SUBSTR4함수는 UCS4 코드 포인트를 사용한다.

  • 만약 position 이 0이라면, 1로써 처리한다.

  • 만약 position이 양이라면, 오라클 데이터 베이스는 문자열에서 최초 문자를 발견하기 위해서 문자열의 처음부터 검색한다.

  • 만약 position이 음수라면, 오라클 데이터 베이스는 문자열의 끝에서 부터 역으로 검색한다.

  • 만약 substring_length가 생략되었으면, 오라클 데이터 베이스는 지정된 위치에서 문자열의 끝까지 모든 문자를 반환한다. 만약 substring_length가 1보다 작은경우에는, 오라클은 null을 반환한다.

string의 데이터 형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB이다. position과 substring_length는 NUMBER 또는 암묵적으로 NUMBER으로 변환가능한 정수일 필요가 있다. 반환된 값은 string과 같은 데이터형이다. 인수로써 SUBSTR에 전달될 소수점은 자동적으로 정수로 변환된다.

예제

다음 예제는 "ABCDEFG"의 지정된 substring을 반환한다.

SELECT SUBSTR('ABCDEFG',3,4) "Substring"
     FROM DUAL;

Substring
---------
CDEF

뒤에서 5번째 위치에서 4자리
SELECT SUBSTR('ABCDEFG',-5,4) "Substring"
     FROM DUAL;

Substring
---------
CDEF

더블바이트 데이터베이스 문자 세트라 가정:

SELECT SUBSTRB('ABCDEFG',5,4.2) "Substring with bytes"
     FROM DUAL;

Substring with bytes
--------------------
CD


TRANSLATE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TRANSLATE

문법

translate::=
Description of translate.gif follows

그림 설명

목적

TRANSLATE함수는 from_string에서 각 문자를 to_string안의 대응하는 문자로 치환하여 expr을 반환한다. from_string안에 존재하지 않는 expr안의 문자는 치환되지 않는다. 만약 expr이 문자열이라면, 홑 따옴표로 둘러쌓여야 한다. 인수 from_string는 to_string보다 더 많은 문자를 가질수 있다. 이 경우에, from_string의 마지막에 있는 여분의 문자는 to_string안에 상응하는 문자가 없다. 만약 이 여분의 문자가 char안에 있는 경우, 그러한 문자는 반환값으로부터 삭제된다.

반환값으로부터 from_string안의 모든 문자를 삭제하기 위해서 to_string에 대한 빈 문자열을 사용할수 없다. 오라클 데이터 베이스는 공백 문자열을 NULL로써 해석하고, 이 함수가 NULL 인수를 가지면, NULL을 반환한다.

TRANSLATE함수는 REPLACE함수에 의해 제공되는 관련 함수를 제공한다. REPLACE함수는 단일 문자열로부터 다른 단일 문자열의 치환과 문자열의 삭제를 실행할수 있다. TRANSLATE는 하나의 연산에서 단일 조작으로 복수의 단일 문자를 1대 1로 치환할수 있다.

이 함수는 CLOB데이터를 직접적으로 지원하지 않는다. 그러나 암묵적인 데이터 변환으로 CLOB를 인수로서 전달할수 있다.

참 조 :

REPLACE 참조.

예 제

다음 문장은 book 타이틀을 파일명으로써 이용되기 위해서 문자열로 변환한다. from_string는 공백,*,/,''(escape문자로써 여분의 apostrophe를 가지는)의 4개의 문자를 포함한다. to_string는 3개의 underscore를 소유한다. from_string의 4번째 문자(')에 대응하는 치환 문자가 없기 때문에, 반환되는 값으로 apostrophe가 삭제되었다.

SELECT TRANSLATE('SQL*Plus User''s Guide', ' */''', '___') FROM DUAL;

TRANSLATE('SQL*PLUSU
--------------------
SQL_Plus_Users_Guide


TREAT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TREAT

문법

treat::=
Description of treat.gif follows

그림 설명

목적

TREAT함수는 인수의 선언형을 변경한다.

이 함수를 이용하기 위하여 type에 대한 EXECUTE object권한이 필요하다.

  • type은 supertype또는 expr의 선언형의 subtype일 필요가 있다. 만약 가장 많이 지정된 expr의 형태가 type(type의 subtype)일때, TREAT함수는 expr을 반환한다. 만약 가장 많이 지정된 expr의 type이 type(type의 subtype)이 아니라면, TREAT함수는 NULL을 반환한다.

  • 만약 expr의 선언형이 REF 타입이라면, REF를 지정할수 있다.

  • 만약 expr의 선언형이 expr의 소스 타입이 REF라면, type은 subtype 또는 expr의 소스 타입의 supertype일 필요가 있다. 만약 가장 많이 지정된 DEREF(expr)의 형태가 type(type의 subtype)라면, TREAT함수는 expr을 반환한다. 만약 가장 많이 지정된 DEREF(expr)의 형태가 type(type의 subtype)이 아니라면, TREAT함수는 NULL을 반환한다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나 CLOB는 암묵적으로 데이터 변환을 통해서 인수로 전달 될수 있다.

예제

다음 예제는 "Substitutable Table and Column Examples" 에서 생성된 oe.persons 테이블을 이용한다. 이 테이블은  "Type Hierarchy Example" 에서 생성된 person_type를 기본으로 한다. 이 예제는 persons 테이블에서 모든 사람의 급여 속성을 검색하여서, 종업원이 아닌 사람의 instances에 대한 값은 NULL이다.

SELECT name, TREAT(VALUE(p) AS employee_t).salary salary
   FROM persons p;

NAME                          SALARY
------------------------- ----------
Bob
Joe                           100000
Tim                             1000

치환가능한 열의 subtype 속성에 색인을 생성하기 위하여 TREATE함수를 사용할수 있다.


TRIM

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TRIM

문법

trim::=
Description of trim.gif follows

그림 설명

목적

TRIM함수는 문자열부터 선행 또는 후행(양쪽)문자를 제거할수 있다. 만약 trim_character 또는 trim_source가 문자 상수를 지정했다면, 인용부호로 둘러쌀 필요가 있다.

  • 만약 LEADING을 지정했다면, 오라클 데이터 베이스는 trim_charcter과 동일한 선행 문자를 삭제한다.

  • 만약 TRAILING을 지정했다면, 오라클 데이터 베이스는 trim_charcter과 동일한 후행 문자를 삭제한다.

  • 만약 BOTH를 지정했다면, 오라클 데이터 베이스는 trim_charcter과 동일한 선행과 후행 문자를 삭제한다.

  • 만약 trim_character을 지정하지 않으면, 기본 값은 공백이다.

  • 만약 단지 trim_source를 지정했다면, 오라클은 선행과 후행 공백을 제거한다.

  • 함수는 VARCHAR2 데이터 형의 값을 반환한다. 값의 최대 length는 trim_source의 length이다.

  • 만약 trim_source 또는 trim_charcter 중에 한쪽이 NULL이면, TRIM 함수는 Null을 반환한다.

trim_charcter과 trim_source는 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB의 데이터 형이다. 반환되는 문자열은 VARCHAR2 데이터형이고, trim_source와 같은 문자 세트의 문자열이 반환된다.

예제

이 예제는 hr schema에서 employees의 고용일로 부터 선행 zero를 삭제한다.

SELECT employee_id,
       TO_CHAR(TRIM(LEADING 0 FROM hire_date))
FROM employees
WHERE department_id = 60;

EMPLOYEE_ID TO_CHAR(T
----------- ---------
        103 3-JAN-90
        104 21-MAY-91
        105 25-JUN-97
        106 5-FEB-98
        107 7-FEB-99


UPPER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

UPPER

문법

upper::=
Description of upper.gif follows

그림 설명

목적

UPPER함수는 모든 문자를 대문자로 변환한다. 인수 char의 데이터 형은 datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB이다. 반환값은 char과 같은 데이터형이다.

예 제

다음 예제는 대문자로 변환하여 반환한다.

SELECT UPPER('Large') "Uppercase"
   FROM DUAL;

Upper
-----
LARGE


NLS_CHARSET_DECL_LEN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NLS_CHARSET_DECL_LEN

문법

nls_charset_decl_len::=
Description of nls_charset_decl_len.gif follows

그림 설명

목적

NLS_CHARSET_DECL_LEN함수는 NCHAR열의 선언된 폭을 반환한다. 인수 byte_count는 열의 폭이다. 인수 char_set_id는 열의 문자 세트 ID이다.

예제

다음 예제는 다중 byte 문자 세트를 이용할때 열의 폭이 200byte인 문자의 수를 반환한다.

SELECT NLS_CHARSET_DECL_LEN
  (200, nls_charset_id('ja16eucfixed'))
   FROM DUAL;

NLS_CHARSET_DECL_LEN(200,NLS_CHARSET_ID('JA16EUCFIXED'))
--------------------------------------------------------
                                                     100


NLS_CHARSET_ID

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NLS_CHARSET_ID

문법

nls_charset_id::=
Description of nls_charset_id.gif follows

그림 설명

목적

NLS_CHARSET_ID 함수는 문제셋 이름에 상응하는 ID번호를 반환.

NLS_CHARSET_ID함수는 문자 세트 이름 text에 상응하는 문자 세트 ID를 반환한다. 인수 text는 실행시의 VARCHAR2값이다. text값 'CHAR_CS'는 서버의 데이타 베이스 문자 세트 ID 번호를 반환한다. text값 'NCHAR_CS'은 서버의 각국어 문자 세트 ID를 반환한다.

유효하지 않는 문자 세트 명은 Null을 반환한다.

text는 서버에서 지원되는 CHAR_CS나 NCHAR_CS이다.

예제

다음 예제는 문자세트의 문자 세트 ID를 반환한다.

SELECT NLS_CHARSET_ID('ja16euc')
  FROM DUAL;

NLS_CHARSET_ID('JA16EUC')
-------------------------
                      830


NLS_CHARSET_NAME

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NLS_CHARSET_NAME

문법

nls_charset_name::=
Description of nls_charset_name.gif follows

그림 설명

목적

NLS_CHARSET_NAME함수는 ID번호 number에 상응하는 문자 세트의 이름을 반환한다. 문자 세트 명은 데이타 베이스 문자 세트에서 VARCHAR2값을 반환된다.

만약 number가 유효한 문자 세트 ID로 인식 되지 않으면, NULL을 반환한다.

예제

다음 예제는 문자 세트 ID 번호 2에 상응하는 문자 세트를 반환한다.

SELECT NLS_CHARSET_NAME(2)
  FROM DUAL;

NLS_CH
------
WE8DEC


ASCII

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ASCII

문법

ascii::=
Description of ascii.gif follows

그림 설명

목적

ASCII 함수는 주어진 char의 첫 문자의 아스키 값에 상응하는 10진수값을 반환한다.

인수 char의 데이터 형은 CHAR, VARCHAR2, NCHAR, NVARCHAR2이다. 반환된 값의 데이터 형은 NUMBER이다. 만약 데이터 베이스 문자 세트가 7-bit ASCII세트라면, 이 함수는 ASCII값을 반환한다. 만약 데이터 베이스 문자 세트가 EBCDIC코드라면, EBCDIC값을 반환한다. 상응하는 EBCDIC 문자함수는 없다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 변환을 통해서 전달될수 있다.

예제

다음 예제는 문자 Q의 아스키값을 반환 :

SELECT ASCII('Q') FROM DUAL;

ASCII('Q')
----------
        81


INSTR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

INSTR

문법

instr::=
Description of instr.gif follows

그림 설명

목적

INSTR함수는 문자열중에서 지정한 문자가 처음 나타나는 위치를 숫자로 반환.

The INSTR함수는 string에서 substring를 찾는다. 이 함수는 처음 발생한 문자 string의 위치를 나타내는 정수를 반환한다. INSTR함수는 입력 문자 세트에 의해서 정의된 문자를 이용하여 문자열을 산출한다.

INSTRB함수는 문자 대신에 byte를 사용한다.

INSTRC함수는 완전한 UNICODE문자를 사용한다.

INSTR2함수는 UCS2 코드 포인트를 사용한다.

INSTR4함수는 UCS4 코드 포인트를 사용한다.

  • position 은 오라클 데이터 베이스가 검색을 시작하는 string에서 문자의 위치를 나타내는 0이외의 정수이다. 만약 Position이 음수라면, 오라클은 string의 끝에서 역으로 카운트하여 검색한다.

  • occurrence 은 오라클이 검색하여 string의 발생 횟수(정수)이다. Occurrence값은 양의 정수이다.

string과 substring의 데이터 형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB이다. 반환값의 데이터형은 NUMBER이다.

Position과 occurrence는 NUMBER 데이터형이거나, 암묵적으로 NUMBER형으로 변환가능한 데이터형일 필요가 있고, 정수로 변환될 필요가있다. Position 과 occurrence의 기본값은 1이고, 오라클은 string의 처음 문자에서 검색을 시작하여, substring이 처음 나타나는 위치를 검색한다. 반환되는 값은 position의 값과 상관없이 string의 시작에 비례하고, 문자에서 표현된다. 만약 검색이 실패한다면(substring이 string의 position 문자 뒤에 occurrence번 나타나지 않는다면), 반환값은 0이다.

예제

다음 예제는 문자열 CORPORATE FLOOR을 검색하여, 3번째 문자에서 시작하여, "OR"이 두번째 발생하는 위치를 반환한다.

SELECT INSTR('CORPORATE FLOOR','OR', 3, 2)
  "Instring" FROM DUAL;

  Instring
----------
        14

다음 예제는 문자열 끝에서 시작하여서 3번째 문자위치에서 역으로 검색하여서 "OR"이 두번째 나타나는 위치를 반환한다.

SELECT INSTR('CORPORATE FLOOR','OR', -3, 2)
"Reversed Instring"
     FROM DUAL;

Reversed Instring
-----------------
               2

다음 예제는 2 바이트를 가정한다.

SELECT INSTRB('CORPORATE FLOOR','OR',5,2) "Instring in bytes"
   FROM DUAL;

Instring in bytes
-----------------
               27


LENGTH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LENGTH

문법

length::=
Description of length.gif follows

그림 설명

목적

LENGTH함수는 인수 char의 길이를 반환한다. LENGTHB는 charcter 대신 byte사용한다. LENGTHC는 unicode사용한다. LENGTH는 UCS2 codepoint사용한다. LENGTH4는 UCS4 codepoint사용한다.

인수 char의 데이터 형은 CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, NCLOB이다. 반환된 값의 데이터 형은 NUMBER이다. 만약 인수 char의 데이터형이 CHAR이라면, 길이는 모든 trailing공백을 포함한다. 만약 char이 Null이라면, Null을 반환한다.

예 제

다음 예제는 단독 바이트 데이터 베이스 문자 세트를 이용한 LENGTH 함수이다.

SELECT LENGTH('CANDIDE') "Length in characters"
   FROM DUAL;

Length in characters
--------------------
                   7

다음 예제는 더블-바이트 데이터 베이스 문자 세트를 가정한다.

SELECT LENGTHB ('CANDIDE') "Length in bytes"
   FROM DUAL;

Length in bytes
---------------
             14


REGEXP_INSTR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REGEXP_INSTR

문법

regexp_instr::=
Description of regexp_instr.gif follows

그림 설명

목적

지정한 조건(정규 표현)을 만족하는 부분의 최초의 위치(무슨 문자인지)를 돌려줍니다. 또한, 검색을 시작하는 시작 위치를 지정하는 것도 가능합니다

REGEXP_INSTR함수는 정규 표현 패턴에 대한 문자열을 검색하는 INSTR함수의 기능을 확정한 것이다. 이 함수는 입력 문자 세트에 의해 정의되는것과 같은 문자를 이용하여 문자열을 평가한다. 그것은 return_option인수의 값에 의존하는 일치되는 substring의 처음과 종료 위치를 나타내는 정수를 반환한다. 만약 일치하는 값이 발견되지 않으면, 함수는 0을 반환한다.

이 함수는 POSIX 정규 표현 규격과 유니코드 정규 표현 가이드 라인을 따른다.

  • source_string 는 검색 값으로 다루어지는 문자 표현이다. 보통 문자열이고, CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB 데이터중에 하나이다.

  • pattern은 정규 표현이다. 이것은 일반적으로 텍스트 문자이고, CHAR,VARCHAR2,NCHAR,NVARCHAR2의 데이터형이다. 최대 512바이트를 지정할수 있다. 만약 pattern의 데이터형이 source_string의 데이터형과 다른 경우에는, 오라클 데이터베이스는 pattern을 source_string의 데이터형으로 변환한다. pattern에서 지정할수 있는 연산자의 리스트는  Appendix C, " Oracle Regular Expression Support" 참조.

  • Position은 오라클이 검색을 시작하는 source_string의 문자를 나타내는 양의 정수이다. 기본값은 1이고, source_char의 처음 문자를 검색을 시작한다.

  • occurrence 은 source_string에서 pattern의 발생하는 것 중에서 나타나는 양의 정수이다. 기본값은 1이고, 오라클이 pattern의 처음 발생하는것을 검색하는것을 의미한다.

  • return_option 은, 오라클이 발생하는 것과 관련한 것을 지정할수 있다.

    • 만약 0을 지정하면, 오라클은 발생의 첫 문자의 위치를 반환한다. 기본값이다.

    • 만약 1을 지정하면, 오라클은 발생한것의 다음 문자의 위치를 반환한다.

  • match_parameter 은 함수의 기본적 일치하는 행동을 변경하기 위한 텍스트 문자이다. match_parameter에 대한 다음 값의 하나 이상을 지정할수 있다.

    • 'i'는 대소문자를 구별하지 않는다.

    • 'c'는 대소문자를 구별한다.

    • 'n'은 새줄 문자와 일치하는 match-any-character문자인 period(.)을 허용한다. 만약 이 파라미터를 생략하면, 피어리드는 새줄 문자와 일치하지 않는다. (http://pcrc.hongik.ac.kr/~progman/docs/regexp/node6.html)

    • 'm'는 다중 라인과 같은 소스 문자열을 처리한다. 오라클은 소스 문자에 임의의 라인에 선두와 끝으로써 ^과 $을 해석한다. 만약 이 파라미터를 생략하면, 오라클은 단일행으로써 소스 문자열을 처리한다.

    만약 복수의 모순된 값을 지정하면, 오라클은 마지막 값을 이용한다. 예를들어, 만약 'ic'를 지정하면, 오라클은 대소문자를 구별하는 검색을 한다. 만약 위에서 보이는것과 다른 문자를 지정하면, 오라클은 에러를 발생한다.

    만약 match_parameter를 생략하면,

    • 기본적 대소문자 구별은 NLS_SORT 파라미터의 값에 의해 정의 된다.

    • period(.)은 새줄문자와 일치하지 않는다.

    • 소스 문자열은 단일행으로써 취급된다.

      참 조 :

      INSTR and REGEXP_SUBSTR

      http://blog.empas.com/phpaspjsp/read.html?a=14672699&c=1232545

      http://www.oracle.com/technology/global/kr/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html

      http://www.oracle.com/technology/global/kr/oramag/webcolumns/2003/techarticles/rischert_regexp_pt2.html

      http://blog.empas.com/kk760105/17154912

      도서 : Oracle Regular Expressions 참조

예제

다음 예제는 문자열을 조사하고, 하나 이상의 공백 이외의 문자의 발생을 검색한다. 오라클은 문자열에서 처음 문자로부터 검색을 시작하여, 하나 이상의 비공백 문자의 6번째 발생의 시작 위치를 반환한다.

SELECT
  REGEXP_INSTR('500 Oracle Parkway, Redwood Shores, CA',
               '[^ ]+', 1, 6) "REGEXP_INSTR"
FROM DUAL;

REGEXP_INSTR
------------
          37

다음 예제는 문자열을 조사하고, 대소문자를 구별하지 않고, s,r,p로 시작하여, 임의의 6번째 알파벳 문자가 발생하는 단어를 검색한다.
오라클은 문자열에서 3번째 문자에서 검색을 시작해서, 대소문자의 s,r,p로 시작되는 7 문자의 단어가 2번째 출현한 후의 문자열내의 위치를 반환한다.
SELECT
  REGEXP_INSTR('500 Oracle Parkway, Redwood Shores, CA',
               '[s|r|p][[:alpha:]]{6}', 3, 2, 1, 'i') "REGEXP_INSTR"
FROM DUAL;

REGEXP_INSTR
------------
          28

이 함수는 패턴의 시작 위치를 반환하며, 따라서 INSTR 함수와 유사한 형태로 동작합니다. REGEXP_INSTR함수의 사옹 방법은 표 6에서 확인할 수 있습니다. 두 함수의 가장 중요한 차이는 REGEXP_INSTR를 이용하는 경우 특정 문자열이 아닌 패턴을 지정할 수 있으며, 따라서 훨씬 유연한 검색이 가능하다는 사실입니다. 다음 예에서는 REGEXP_INSTR을 사용하여 Joe Smith, 10045 Berry Lane, San Joseph, CA 91234문자열에서 5 개의 숫자로 구성된 우편 번호 패턴의 시작 부분을 반환하고 있습니다. 정규 표현식 [[:digit:]]{5}를 사용하는 경우 우편 번호가 아닌 집 주소 번호의 시작 위치를 얻게 됩니다 (처음으로 검색되는 5 개 연속 숫자 패턴이 10045이기 때문입니다). 따라서 $ 메타문자를 사용하여 표현식의 앵커를 라인 끝부분으로 지정해야 합니다. 이렇게 하면 집 주소 번호에 관계없이 우편 번호의 시작 위치를 얻을 수 있습니다.

SELECT REGEXP_INSTR('Joe Smith, 10045 Berry Lane, San Joseph, CA 91234',
       '[[:digit:]]{5}$')
       AS rx_instr
  FROM dual
  RX_INSTR
----------
        45

B(b)또는 C(c)가 2번 이상 문자열에 들어 있는 데이터 검색

SELECT * FROM TEST_REGEX WHERE REGEXP_INSTR(VALUE, '[b-c]', 1, 2, 0, I)>0;


ADD_MONTHS

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ADD_MONTHS

문법

add_months::=
Description of add_months.gif follows

그림 설명

목적

ADD_MONTHS함수는 일자 date에 특정 개월수 integer를 더한 값을 반환한다. 인수 date는 datetime값 또는 암묵적으로 DATE로 변환 할수 있는 값이다. 인수 integer는 정수 또는 암묵적으로 정수로 변환할수 있는 값이다. 반환된 값은 인수 date의 데이터 타입과 상관없이 항상 DATE이다. 만약 인수 date의 날짜가 월의 마지막 날이거나 결과값의 날짜가 인수 date의 날짜보다 적은 경우에는 결과값 의 마지막 날짜가 반환된다. 이 외의 경우에는, 날짜는 date와 같은 날짜이다.

예제

다음 예제는 sample 테이블 employees에서 hire_date에 한달 후 날짜를 반환.

SELECT TO_CHAR(
     ADD_MONTHS(hire_date,1),
     'DD-MON-YYYY') "Next month"
     FROM employees
     WHERE last_name = 'Baer';

Next Month
-----------
07-JUL-1994


CURRENT_DATE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CURRENT_DATE

문법

current_date::=
Description of current_date.gif follows

그림 설명

목적

CURRENT_DATE 함수는 현재 세션의 날짜 정보를 Date 데이터 형으로 반환한다.

예제

다음 예제는 CURRENT_DATE가 세션 time zone에 따라서 다르다.

ALTER SESSION SET TIME_ZONE = '-5:0';
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;

SESSIONTIMEZONE CURRENT_DATE
--------------- --------------------
-05:00          29-MAY-2000 13:14:03

ALTER SESSION SET TIME_ZONE = '-8:0';
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;

SESSIONTIMEZONE CURRENT_DATE
--------------- --------------------
-08:00          29-MAY-2000 10:14:33


CURRENT_TIMESTAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CURRENT_TIMESTAMP

문법

current_timestamp::=
Description of current_timestamp.gif follows

그림 설명

목적

CURRENT_TIMESTAMP 함수는 현재 session의 날짜와 시간 정보를 반환한다. current_timestamp는 time zone까지 출력되지만, localtimestamp는 time zone은 출력되지 않는다.

CURRENT_TIMESTAMP함수는 session time zone의 현재 시각과 시간을 TIMESTAMP WITH TIME ZONE 데이터형의 값으로 반환한다. time zone offset은 SQL 세션의 현재 local 시간을 반영한다. 만약 지정을 생략했다면, 기본은 6이다. 이 함수와 LOCALTIMESTAMP의 차이는 CURRENT_TIMESTAMP는 TIMESTAMP WITh TIME ZONE값을 반영하고, LOCALTIMESTAMP는 TIMESTAMP값을 반환한다.

옵션 인수에서, Precistion은 반환되는 시간값의 소수 초 정밀도를 지정한다.

Time Zone Offset(표준 시간대 오프셋) — 그리니치 표준시(GMT)와 로컬 시간 사이의 차이. 예를 들어, 파리의 표준 시간대 오프셋은 GMT +1이며 뉴욕의 로컬 시간은 GMT –5입니다.

See Also:

LOCALTIMESTAMP

예제

다음 예제는 CURRENT_TIMESTAMP가 session time zone에 따라 다른것을 설명한다.

ALTER SESSION SET TIME_ZONE = '-5:0';
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;

SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ---------------------------------------------------
-05:00          04-APR-00 01.17.56.917550 PM -05:00

ALTER SESSION SET TIME_ZONE = '-8:0';
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;

SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ----------------------------------------------------
-08:00          04-APR-00 10.18.21.366065 AM -08:00

만약 CURRENT_TIMESTAMP를 포맷 mask로 이용한다면, 포맷 mask는 함수에 의해 반환되는 값과 일치시켜야한다. 예를들어, 다음 테이블을 고려하자.

CREATE TABLE current_test (col1 TIMESTAMP WITH TIME ZONE);

다음 문장은 mask가 함수에 의해 반환되는 형식의 TIME ZONE 부분을 포함하지 않아서 실패이다.

INSERT INTO current_test VALUES
  (TO_TIMESTAMP_TZ(CURRENT_TIMESTAMP, 'DD-MON-RR HH.MI.SSXFF PM'));

다음 문장은 CURRENT_TIMESTAMP의 반환되는 형태와 일치시키기 위하여 올바른 포맷 mask를 이용한다.

INSERT INTO current_test VALUES (TO_TIMESTAMP_TZ
    (CURRENT_TIMESTAMP, 'DD-MON-RR HH.MI.SSXFF PM TZH:TZM'));


DBTIMEZONE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

DBTIMEZONE

문법

dbtimezone::=
Description of dbtimezone.gif follows

그림 설명

목적

DBTIMEZONE함수는 데이터 베이스 time zone의 값을 반환한다. 반환된 타입은 time zone offset( 포맷 '[+|-] TZH:TZM'에서 문자형) 또는 time zone 지역명이다. 이것은 가장 최근의 CREATE DATABASE 또는 ALTER DATABASE문장에서 사용자가 지정한 database time zone에 의존한다.

예제

다음 예제는 database time zone이 UTC time zone으로 지정된것을 가정한다.

SELECT DBTIMEZONE FROM DUAL;

DBTIME
------
+00:00


EXTRACT (datetime)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

EXTRACT (datetime)

문법

extract_datetime::=
Description of extract_datetime.gif follows

그림 설명

목적

EXTRACT함수는 특정 날짜,시간 값이나 날짜 값 표현식으로부터 지정된 날짜 영역의 값을 추출하여 반환한다. TIMEZONE_REGION 또는 TIMEZONE_ABBR(생략형)을 추출하는 경우, 반환값은 적절한 time zone명 또는 생략형을 포함한 문자열이다. 다른 임의의 값을 추출할 경우, 반환되는 값은 Gregorian calendar(태양력)이다. time zone값을 가지는 datetime으로부터 추출하는 경우, 반환되는 값은 UTC이다. time zone명과 그에 상응하는 생략형을 표시하기 위해서, V$TIMEZONE_NAMES 동적 실행 뷰(dynamic performance view)를 실행하라.

Note:

TIMEZONE 지역명은 서머타임 기능에 의해 필요해 진다. 지역명은 2개의 time zone에서 저장된다. 기본적인 time zone 파일은 최대 퍼포먼스를 위한 일반적 time zones을 가지는 작은 파일이다. 만약 time zone이 기본 파일에 존재하지 않으면, ORA_TZFILE 환경 변수의 방법에 의해 완전한 파일 경로를 제공할때 까지 서머타임은 지원되지 않는다.

datetime 필드, datetime 또는 구간 값 표현의 조합은 애매한 결과가 될수있다. 이런 경우, 오라클 데이터 베이스는 UNKNOWN을 반환한다.(자세한 사항은 예제 참조)

추출하는 필드는 datetime_value_expr 또는 interval_value_expr의 필드일 필요가 있다. 예를 들어서, DATE값으로부터 YEAR,MONTH,DAY만을 추출할수 있다. TIMESTAMP WITH TIME ZONE 데이터형으로부터 TIMEZONE_HOUR과 TIMEZONE_MINUTE를 추출할수 있다.

예제

다음 예제는 1998년을 반환한다.

SELECT EXTRACT(YEAR FROM DATE '1998-03-07') FROM DUAL;

EXTRACT(YEARFROMDATE'1998-03-07')
---------------------------------
                             1998

다음 예제는 hr.employees테이블에서 1998년 이후에 고용된 모든 종업원을 선택한다.

SELECT last_name, employee_id, hire_date
   FROM employees
   WHERE EXTRACT(YEAR FROM
   TO_DATE(hire_date, 'DD-MON-RR')) > 1998
   ORDER BY hire_date;

LAST_NAME                 EMPLOYEE_ID HIRE_DATE
------------------------- ----------- ---------
Landry                            127 14-JAN-99
Lorentz                           107 07-FEB-99
Cabrio                            187 07-FEB-99
. . .

다음 예제는 생략형 결과로, 오라클은 UNKNOWN을 반환한다.

SELECT EXTRACT(TIMEZONE_REGION
      FROM TIMESTAMP '1999-01-01 10:00:00 -08:00')
   FROM DUAL;

EXTRACT(TIMEZONE_REGIONFROMTIMESTAMP'1999-01-0110:00:00-08:00')
----------------------------------------------------------------
UNKNOWN


FROM_TZ

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

FROM_TZ

문 법

from_tz::=
Description of from_tz.gif follows
그림 설명

목적

FROM_TZ함수는 timestamp 값과 time zone값을 TIMESTAMP WITH TIME ZONE값으로 변환한다. time_zone_value값은 포맷 'TZH:TZM'의 문자값 또는 옵션 TZD포맷을 가지는 TZR에서 문자열이 반환하는 문자표현이다.

예제

다음 예제는 timestamp 값을 TIMESTAMP WITH TIME ZONE으로 반환한다.

SELECT FROM_TZ(TIMESTAMP '2000-03-28 08:00:00', '3:00')
   FROM DUAL;

FROM_TZ(TIMESTAMP'2000-03-2808:00:00','3:00')
---------------------------------------------------------------
28-MAR-00 08.00.00 AM +03:00


LAST_DAY

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LAST_DAY

문법

last_day::=
Description of last_day.gif follows

그림 설명

목적

LAST_DAY 함수는 해당 날짜가 속한 달의 마지막 날짜를 반환한다. 월마다 마지막 날짜가 다르므로 유용하게 사용될 수 있다.
반환된 데이터 형은 인수 date와 상관없이 항상 DATE이다.

예제

다음 문장은 현재 달의 남은 날짜를 알려준다.

SELECT SYSDATE,
   LAST_DAY(SYSDATE) "Last",
   LAST_DAY(SYSDATE) - SYSDATE "Days Left"
   FROM DUAL;

SYSDATE   Last       Days Left
--------- --------- ----------
30-MAY-01 31-MAY-01          1

다음 예제는 각 종업원의 고용 일자에 5개월을 더한다.

SELECT last_name, hire_date, TO_CHAR(
   ADD_MONTHS(LAST_DAY(hire_date), 5)) "Eval Date"
   FROM employees;

LAST_NAME                 HIRE_DATE Eval Date
------------------------- --------- ---------
King                      17-JUN-87 30-NOV-87
Kochhar                   21-SEP-89 28-FEB-90
De Haan                   13-JAN-93 30-JUN-93
Hunold                    03-JAN-90 30-JUN-90
Ernst                     21-MAY-91 31-OCT-91
Austin                    25-JUN-97 30-NOV-97
Pataballa                 05-FEB-98 31-JUL-98
Lorentz                   07-FEB-99 31-JUL-99
. . .


LOCALTIMESTAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LOCALTIMESTAMP

문법

localtimestamp::=
Description of localtimestamp.gif follows

그림 설명

목적

LOCALTIMESTAMP함수는 timestamp의 현재 날짜와 시각을 출력한다.
current_timestamp는 time zone까지 출력되지만,localtimestamp는 time zone은 출력되지 않는다

LOCALTIMESTAMP함수는 TIMESTAMP 데이터형 값의 session time zone의 현재 날짜와 시각을 반환한다. 이 함수와 CURRENT_TIMESTAMP의 차이점은 LOCALTIMESTAMP함수는 TIMESTAMP 값을 반환하고, CURRENT_TIMESTAMP함수는 TIMESTAMP WITH TIME ZONE 값을 반환한다.

옵션 인수는 timestamp_precision은 반환되는 시간 값의 소수 초 정밀도(fractional second precision)를 지정한다.

참 조 :

CURRENT_TIMESTAMP

예제

다음 에제는 LOCALTIMESTAMP함수와 CURRENT_TIMESTAMP함수의 차이점을 설명한다.

ALTER SESSION SET TIME_ZONE = '-5:00';
SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

CURRENT_TIMESTAMP                    LOCALTIMESTAMP
-------------------------------------------------------------------
04-APR-00 01.27.18.999220 PM -05:00  04-APR-00 01.27.19 PM

ALTER SESSION SET TIME_ZONE = '-8:00';
SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

CURRENT_TIMESTAMP                    LOCALTIMESTAMP
-----------------------------------  ------------------------------
04-APR-00 10.27.45.132474 AM -08:00  04-APR-00 10.27.451 AM

만약 format mask를 가지고 LOCALTIMESTAMP함수를 이용한다면, 함수에 의해 반환되는 값과 format mask를 일치시켜야한다. 예를들어, 다음 테이블을 고려하자.

CREATE TABLE local_test (col1 TIMESTAMP WITH LOCAL TIME ZONE);

다음 문장은 mask가 함수의 반환되는 형식의 TIME ZONE portion을 포함하지 않아서 실패이다.

INSERT INTO local_test VALUES
   (TO_TIMESTAMP(LOCALTIMESTAMP, 'DD-MON-RR HH.MI.SSXFF'));

다음 에제는 LOCALTIMESTAMP의 반환 형식을 일치하는 올바른 format mask를 이용한다.

INSERT INTO local_test VALUES
   (TO_TIMESTAMP(LOCALTIMESTAMP, 'DD-MON-RR HH.MI.SSXFF PM'));


MONTHS_BETWEEN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

MONTHS_BETWEEN

문법

months_between::=
Description of months_between.gif follows

그림 설명

목적

MONTHS_BETWEEN과 ADD_MONTHS 함수는 월 단위로 날짜 연산을 하는 함수이다.
MONTHS_BETWEEN 함수는 날짜와 날짜 사이의 개월 수를 출력하는 함수이고, ADD_MONTHS 함수는 특정 개월 수를 더한 날짜를 출력하는 함수이다.

MONTHS_BETWEEn함수는 일자 date1과 date2 사이의 월을 계산한다. 만약 date1이 date2일자 후라면, 결과값은 양의 값이 반환된다. 만약 date1이 date2보다 빠르다면, 결과값은 음의 값이 반환된다. 만약 date1과 date2가 월의 같은날 이거나 마지막 날이라면, 결과 값은 항상 정수가 된다. 그 이외의 경우, 오라클 데이터 베이스는 결과의 1개월에 대하여 31일로하여 소수부분을 계산하여, date1과 date2의 차이를 계산한다.

예제

다음 예제는 두 날짜 사이의 월을 계산 :

SELECT MONTHS_BETWEEN
   (TO_DATE('02-02-1995','MM-DD-YYYY'),
    TO_DATE('01-01-1995','MM-DD-YYYY') ) "Months"
    FROM DUAL;

    Months
----------
1.03225806


NEW_TIME

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NEW_TIME

문법

new_time::=
Description of new_time.gif follows

그림 설명

목적

NEW_TIME 함수는 date,zone1시간대를 zone2 시간대로 출력.

NEW_TIME함수는 시간대 timezone1의 일자와 시간을 시간대 timezone2의 일자와 시간으로 반환한다. 이 함수를 이용하기 전에, 24-hour time을 표시하기 위해 NLS_DATE_FORMAT 파라미터를 설정할 필요가 있다. 반환 타입은 date의 데이터 형식과 관계없이 항상 DATE이다..

인수 timezone1과 timezone2는 다음 텍스트 문자열중에 선택할수 있다.

  • AST, ADT: 대서양 표준시 및 서머타임

  • BST, BDT: 베링 표준시 및 서머타임

  • CST, CDT: 중앙 표준시 및 서머타임

  • EST, EDT: 동부 표준시 및 서머타임

  • GMT : 그리니치 표준시 및 서머타임

  • HST, HDT: 알라스카-하와이 표준시 및 서머타임

  • MST, MDT: 동산악 표준시 및 서머타임

  • NST: 뉴퍼틀랜드 표준시

  • PST, PDT: 태평양 표준시 및 서머타임

  • YST, YDT: 동유콘 표준시 및 서머타임

예제

다음 예제는 주어진 태평양 표준시와 같은 대서양 표준시를 반환한다.

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';

SELECT NEW_TIME(TO_DATE('11-10-99 01:23:45', 'MM-DD-YY HH24:MI:SS'),
                'AST', 'PST') "New Date and Time" FROM DUAL;

New Date and Time
--------------------
09-NOV-1999 21:23:45


NEXT_DAY

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NEXT_DAY

문법

next_day::=
Description of next_day.gif follows

그림 설명

목적

NEXT_DAY 함수는 해당일을 기준으로 명시된 요일의 다음 날짜를 변환.

NEXT_DAY함수는 date 날짜 이후의 char에 의해 정해진 첫번째 weekdate의 날짜를 반환한다. 반환된 타입은 date의 데이터형에 무관하게 항상 DATE이다. 인수 char은 fullname 또는 생략형중에 하나로 세션의 날짜 언어의 요일일 필요가 있다. 필요한 최소한의 수는 생략형 버젼에서 문자의 수이다. 유효한 생략형을 따르는 임의의 문자는 무시된다. 반환되는 값은 인수 date와 같은 시간,분,초 요소를 가진다.

예제

다음 예제는 February 2,2001 이후의 Tuesday를 반환한다.

SELECT NEXT_DAY('02-FEB-2001','TUESDAY') "NEXT DAY"
     FROM DUAL;

NEXT DAY
-----------
06-FEB-2001


NUMTODSINTERVAL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NUMTODSINTERVAL

문법

numtodsinterval::=
Description of numtodsinterval.gif follows

그림 설명

목적

NUMTODSINTERVAL함수는 n을 INTERVAL DAY TO SECOND 문자로 변경한다. 인수 n은 Number 값 또는 암묵적으로 NUMBER 값으로 변환 가능한 식을 사용할수 있다. 인수 interval_unit는 CHAR,VARCHAR2,NCHAR,NVARCHAR2데이터형이다. Interval_unit에 값은 n의 단위를 지정하고, 다음 문자값을 지정해야한다.

  • 'DAY'

  • 'HOUR'

  • 'MINUTE'

  • 'SECOND'

interval_unit 대소문자를 구별하지 않는다.괄호 안의 선행과 후행값은 무시된다. 기본적으로, 반환값은 9이다.

예제

다음 예제는 각 종업원에 대하여, 고용일로 부터 과거 100일 동안 같은 매니저에 의해 고용된 종업원의 수를 측정한다.

SELECT manager_id, last_name, hire_date,
   COUNT(*) OVER (PARTITION BY manager_id ORDER BY hire_date
   RANGE NUMTODSINTERVAL(100, 'day') PRECEDING) AS t_count
   FROM employees;

MANAGER_ID LAST_NAME                 HIRE_DATE    T_COUNT
---------- ------------------------- --------- ----------
       100 Kochhar                   21-SEP-89          1
       100 De Haan                   13-JAN-93          1
       100 Raphaely                  07-DEC-94          1
       100 Kaufling                  01-MAY-95          1
       100 Hartstein                 17-FEB-96          1
. . .
       149 Grant                     24-MAY-99          1
       149 Johnson                   04-JAN-00          1
       201 Goyal                     17-AUG-97          1
       205 Gietz                     07-JUN-94          1
           King                      17-JUN-87          1


NUMTOYMINTERVAL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NUMTOYMINTERVAL

문법

numtoyminterval::=
Description of numtoyminterval.gif follows

그림 설명

목적

NUMTOYMINTERVAL함수는 n을 INTERVAL YEAR TO MONTH문자로 변경한다. 인수 n은 Number값 또는 암묵적으로 NUMBER값으로 변환 가능한 식을 사용할수 있다. 인수 interval_unit는 CHAR,VARCHAR2,NCHAR,NVARCHAR2데이터형이다. Interval_unit에 값은 n의 단위를 지정하고, 다음 문자값을 지정해야한다.

  • 'YEAR'

  • 'MONTH'

interval_unit 대소문자를 구별하지 않는다.괄호 안의 선행과 후행값은 무시된다. 기본적으로, 반환값은 9이다.

예제

다음 예제는 각 종업원데 대하여, 고용일로부터 과거 1년동안에 고용된 종업원의 총 임금을 측정한다.

SELECT last_name, hire_date, salary, SUM(salary)
   OVER (ORDER BY hire_date
   RANGE NUMTOYMINTERVAL(1,'year') PRECEDING) AS t_sal
   FROM employees;

LAST_NAME                 HIRE_DATE     SALARY      T_SAL
------------------------- --------- ---------- ----------
King                      17-JUN-87      24000      24000
Whalen                    17-SEP-87       4400      28400
Kochhar                   21-SEP-89      17000      17000
. . .
Markle                    08-MAR-00       2200     112400
Ande                      24-MAR-00       6400     106500
Banda                     21-APR-00       6200     109400
Kumar                     21-APR-00       6100     109400


ROUND (date)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ROUND (date)

문법

round_date::=
Description of round_date.gif follows

그림 설명

목적

ROUND함수는 포맷 모델 fmt에 의해 지정한 단위로 반올림된 날짜를 반환한다. 반환된 값은 비록 date에 대하여 다른 datetime형을 지정했어도, 항상 DATE데이터형을 반환한다. 만약 fmt를 생략하면, date는 day 근처로 반올림 된다. date 표현은 DATE값으로 변화될 필요가 있다.

예제

다음 예제는 다음 해의 첫번째 날과 가까운 날짜를 반올림 한다.

SELECT ROUND (TO_DATE ('27-OCT-00'),'YEAR')
   "New Year" FROM DUAL;

New Year
---------
01-JAN-01


SESSIONTIMEZONE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SESSIONTIMEZONE

문법

sessiontimezone::=
Description of sessiontimezone.gif follows

그림 설명

목적

SESSIONTIMEZONE함수는 현재 세션의 시간대역(time zone)을 반환한다. 반환 타입은 시간대역 offset('[+|]TZH:THM'형태의 문자형) 또는 시간대 지역명이다. 최근의 Alter Session문장에서 사용자가 지정한 세션 시간대역 값에 의존한다.

예제

다음 예제는 현재 세션의 시간대역을 반환한다.

SELECT SESSIONTIMEZONE FROM DUAL;

SESSION
-------
-08:00


SYS_EXTRACT_UTC

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_EXTRACT_UTC

문법

sys_extract_utc::=
Description of sys_extract_utc.gif follows

그림 설명

목적

SYS_EXTRACT_UTC 함수는 time zone offset 또는 time zone region name을 포함한 datetime값으로 부터 협정 세계시간 UTC (Coordinated Universal Time—formerly Greenwich Mean Time)을 추출한다.

예제

다음 예제는 지정한 datetime으로 부터 UTC를 추출한다.

SELECT SYS_EXTRACT_UTC(TIMESTAMP '2000-03-28 11:30:00.00 -08:00')
   FROM DUAL;

SYS_EXTRACT_UTC(TIMESTAMP'2000-03-2811:30:00.00-08:00')
-----------------------------------------------------------------
28-MAR-00 07.30.00 PM


SYSDATE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYSDATE

문법

sysdate::=
Description of sysdate.gif follows

그림 설명

목적

SYSDATE함수는 데이터 베이스가 있는 OS의 일자와 시간을 반환한다. 반환된 값의 데이터 형은 DATE이고, 반환된 포맷은 NLS_DATE_FORMAT 초기 파라미터의 값에 의존한다. 이 함수는 인수가 필요없다. 분산된 SQL문장에서, 이 함수는 로컬 데이터베이스의 OS의 일자와 시간을 반환한다. 이 함수는 CHECK 제약의 조건으로 사용할수 없다.

예제

다음 예제는 현재 OS의 날짜와 시각을 반환한다.

SELECT TO_CHAR
    (SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "NOW"
     FROM DUAL;

NOW
-------------------
04-13-2001 09:45:51


SYSTIMESTAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYSTIMESTAMP

문법

systimestamp::=
Description of systimestamp.gif follows

그림 설명

목적

SYSTIMESTAMP함수는 데이터 베이스가 존재하는 시스템의 fractional 초와 시간대를 포함한 시스템의 날짜를 반환한다.

예제

다음 예제는 시스템의 timestamp를 반환한다.

SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
------------------------------------------------------------------
28-MAR-00 12.38.55.538741 PM -08:00

다음 예제는 정확하게 fractional 초를 지정하는 방법을 보인다.

SELECT TO_CHAR(SYSTIMESTAMP, 'SSSSS.FF') FROM DUAL;

TO_CHAR(SYSTIME
---------------
55615.449255


TO_CHAR (datetime)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_CHAR (datetime)

문법

to_char_date::=
Description of to_char_date.gif follows

그림 설명

목적

TO_CHAR(datetime)함수는 datetime 또는 날짜의 구간값,TIMESTAMP,TIME 구역을 가지는 TIMESTAMP, 또는 TIMESTAMP WITH LOCAL TIME ZONE 데이터 형을 date 포맷 fmt에 의해 지정된 포맷의 VARCHAR2 데이터 타입의 값으로 변환한다. 만약 fmt를 생략한다면, date는 다음과 같이 VARCHAR2 값으로 변환한다.

  • date 값은 기본적 date 포맷의 값으로 변환한다.

  • TIMESTAMP나 TIMESTAMP WITH LOCAL TIME ZONE값은 기본적 timestamp 포맷의 값으로 변환한다.

  • TIMESTAMP WITH TIME ZONE값은 기본적으로 timestamp with time zone 포맷으로 변환한다.

으datetime 포맷애 관한 정보는 "Format Models " 를 참조.

'nlsparam'인수는 월과 일자 이름, 약칭으로 반환되는 언어를 지정한다. 이 인수는 다음과 같은 형태이다.

'NLS_DATE_LANGUAGE = language'

만약 'nlsparam'을 생략하면, 이 함수는 세션에 대한 기본적 일자를 사용한다.

예제

다음 예제는 이 테이블을 이용한다.

CREATE TABLE date_tab (
   ts_col      TIMESTAMP,
   tsltz_col   TIMESTAMP WITH LOCAL TIME ZONE,
   tstz_col    TIMESTAMP WITH TIME ZONE);

다음 예제는 TO_CHAR을 다른 TIMESTAMP 데이터 형으로 적용한 결과를 보여준다.TIMESTAMP WITH LOCAL TIME ZONE 열에 대한 결과는 세션 time zone에 민감하고, 이것에 반하여 TIMESTAMP 와 TIMESTAMP WITH TIME ZONE 열에 대한 결과는 세션 time zone에 영향받지 않는다.

ALTER SESSION SET TIME_ZONE = '-8:00';
INSERT INTO date_tab VALUES (
   TIMESTAMP'1999-12-01 10:00:00',
   TIMESTAMP'1999-12-01 10:00:00',
   TIMESTAMP'1999-12-01 10:00:00');
INSERT INTO date_tab VALUES (
   TIMESTAMP'1999-12-02 10:00:00 -8:00',
   TIMESTAMP'1999-12-02 10:00:00 -8:00',
   TIMESTAMP'1999-12-02 10:00:00 -8:00');

SELECT TO_CHAR(ts_col, 'DD-MON-YYYY HH24:MI:SSxFF'),
       TO_CHAR(tstz_col, 'DD-MON-YYYY HH24:MI:SSxFF TZH:TZM')
FROM date_tab;

TO_CHAR(TS_COL,'DD-MON-YYYYHH2 TO_CHAR(TSTZ_COL,'DD-MON-YYYYHH24:MI:
------------------------------ -------------------------------------
01-DEC-1999 10:00:00           01-DEC-1999 10:00:00.000000 -08:00
02-DEC-1999 10:00:00           02-DEC-1999 10:00:00.000000 -08:00

SELECT SESSIONTIMEZONE,
       TO_CHAR(tsltz_col, 'DD-MON-YYYY HH24:MI:SSxFF')
FROM date_tab;

SESSIONTIMEZONE  TO_CHAR(TSLTZ_COL,'DD-MON-YYYY
---------------  ------------------------------
-08:00           01-DEC-1999 10:00:00.000000
-08:00           02-DEC-1999 10:00:00.000000

ALTER SESSION SET TIME_ZONE = '-5:00';
SELECT TO_CHAR(ts_col, 'DD-MON-YYYY HH24:MI:SSxFF'),
       TO_CHAR(tstz_col, 'DD-MON-YYYY HH24:MI:SSxFF TZH:TZM')
FROM date_tab;

TO_CHAR(TS_COL,'DD-MON-YYYYHH2 TO_CHAR(TSTZ_COL,'DD-MON-YYYYHH24:MI:
------------------------------ -------------------------------------
01-DEC-1999 10:00:00.000000    01-DEC-1999 10:00:00.000000 -08:00
02-DEC-1999 10:00:00.000000    02-DEC-1999 10:00:00.000000 -08:00

SELECT SESSIONTIMEZONE,
       TO_CHAR(tsltz_col, 'DD-MON-YYYY HH24:MI:SSxFF')
FROM date_tab;

SESSIONTIMEZONE           TO_CHAR(TSLTZ_COL,'DD-MON-YYYY
------------------------- ------------------------------
-05:00                    01-DEC-1999 13:00:00.000000
-05:00                    02-DEC-1999 13:00:00.000000


TO_DSINTERVAL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_DSINTERVAL

문법

to_dsinterval::=
Description of to_dsinterval.gif follows

그림 설명

목적

TO_DSINTERVAL함수는 CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터 형식의 문자열을 INTERVAR DAY TO SECOND값으로 변환한다.

  • char 은 변환하는 문자열이다.

  • 이 함수에 지정할수 있는 유효한 nlsparam은 NLS_NUMERIC_CHARACTERS이다. 이 인수 형태는 다음과 같다.

    NLS_NUMERIC_CHARACTERS = "dg"

    where d 와 g 는 소수점 문자와 자리수 단락 을 나타낸다.

예제

다음 예제는 employees테이블에서 1990년 1월 1일 로부터 100일 이상 근무하는 종업원을 검색한다.(100일 10시간이후)

SELECT employee_id, last_name FROM employees
WHERE hire_date + TO_DSINTERVAL('100 10:00:00') <= DATE '1990-01-01';

EMPLOYEE_ID LAST_NAME
----------- ---------------
        100 King
        101 Kochhar
        200 Whalen


TO_TIMESTAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_TIMESTAMP

문법
to_timestamp::=
Description of to_timestamp.gif follows
Description of the illustration to_timestamp.gif

목적

TO_TIMESTAMP함수는 CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터형의 char을 TIMESTAMP 데이터형의 값으로 변환한다.

옵션 fmt는 char의 포맷을 지정한다. 만약 fmt를 생략한다면, char은 기본적으로 TIMESTAMP 데이터형일 필요가 있다. 이 데이터 형은 NLS_TIMESTAMP_FORMAT 초기화 파라미터에 의해서 정해진다. 옵션 'nlsparam' 인수는 일자 변환을 위한 TO_CHAR함수의 경우와 같은 목적을 가진다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나, CLOB은 암묵적 데이터 변화를 통해서 인수로써 전달할수 있다.

예제

다음 예제는 문자열을 timestamp로 변환한다. 문자열이 기본적인 TIMESTAMP 포맷이 아니기 때문에, 포맷 mask를 지정할 필요가 있다.

SELECT TO_TIMESTAMP ('10-Sep-02 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF')
   FROM DUAL;

TO_TIMESTAMP('10-SEP-0214:10:10.123000','DD-MON-RRHH24:MI:SS.FF')
---------------------------------------------------------------------------
10-SEP-02 02.10.10.123000000 PM


TO_TIMESTAMP_TZ

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_TIMESTAMP_TZ

문법

to_timestamp_tz::=
Description of to_timestamp_tz.gif follows
Description of the illustration to_timestamp_tz.gif

목적

TO_TIMESTAMP_TZ함수는 CHAR,VARCHAR2,NCHAR,NVARCHAR2데이터형의 char을 TIMESTAMP WITH TIME ZONE 데이터형으로 변환한다.

Note:

이 함수는 TIMESTAMP WITH LOCAL TIME ZONE으로 변환하지 않는다.이것을 변환하기 위해서는,CAST함수를 이용하라. CAST .

옵션 fmt는 char의 포맷을 지정한다. 만약 fmt를 생략한다면, char은 기본적으로 TIMESTAMP WITH TIME ZONE 데이터형일 필요가 있다. 옵션 'nlsparam'은 일자 변환을 위한 TO_CHAR함수의 경우와 같은 목적을 가진다.

예제

다음 예제는 문자열을 TIMESTAMP WITH TIME ZONE의 값으로 변환한다.

SELECT TO_TIMESTAMP_TZ('1999-12-01 11:00:00 -8:00',
   'YYYY-MM-DD HH:MI:SS TZH:TZM') FROM DUAL;

TO_TIMESTAMP_TZ('1999-12-0111:00:00-08:00','YYYY-MM-DDHH:MI:SSTZH:TZM')
--------------------------------------------------------------------
01-DEC-99 11.00.00.000000000 AM -08:00

다음예제는 OE.order_items 와 OE.orders을 사용하여 UNION연산에서 null 열을 TIMESTAMP WITH LOCAL TIME ZONEW으로써 CAST(형변환)한다.

SELECT order_id, line_item_id,
       CAST(NULL AS TIMESTAMP WITH LOCAL TIME ZONE) order_date
FROM order_items
UNION
SELECT order_id, to_number(null), order_date
FROM orders;

  ORDER_ID LINE_ITEM_ID ORDER_DATE
---------- ------------ -----------------------------------
      2354            1
      2354            2
      2354            3
      2354            4
      2354            5
      2354            6
      2354            7
      2354            8
      2354            9
      2354           10
      2354           11
      2354           12
      2354           13
      2354              14-JUL-00 05.18.23.234567 PM
      2355            1
      2355            2
...


TO_YMINTERVAL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_YMINTERVAL

문법

to_yminterval::=
Description of to_yminterval.gif follows

그림 설명

목적

TO_YMINTERVAL함수는 CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터형의 문자열을 INTERVAL YEAR TO MONTH 형태로 변경한다. char은 변환되는 문자열이다.

예제

다음 예제는 hr.employees테이블에서 각 종업원에 대하여 고용된후에 1년 2개월후의 일자를 계산한다.

SELECT hire_date, hire_date + TO_YMINTERVAL('01-02') "14 months"
   FROM employees;

HIRE_DATE 14 months
--------- ---------
17-JUN-87 17-AUG-88
21-SEP-89 21-NOV-90
13-JAN-93 13-MAR-94
03-JAN-90 03-MAR-91
21-MAY-91 21-JUL-92
. . .


TRUNC (date)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TRUNC (date)

문법

trunc_date::=
Description of trunc_date.gif follows

그림 설명

목적

The TRUNC(date)함수는 포맷 모델 fmt에 의해 지정된 단위를 잘라서 day의 시간 위치를 가지는 date를 반환한다. 반환된 값은 비록 date에 다른 datetime 데이터 형을 지정했어도, DATE데이터 형이다. 만약 fmt를 생략했다면, date는 가장 가까운 날로 절삭한다.

예제

다음 예제는 날자를 절삭한다.(년의 초일자)

SELECT TRUNC(TO_DATE('27-OCT-92','DD-MON-YY'), 'YEAR')
  "New Year" FROM DUAL;

New Year
---------
01-JAN-92


TZ_OFFSET

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TZ_OFFSET

문법

tz_offset::=
Description of tz_offset.gif follows

그림 설명

목적

TZ_OFFSET함수는 문장이 실행된 일자에 근거한 인수에 상응하는 time zone offset을 반환한다. 유효한 time zone 이름,UTC로부터 time zone offset(그 자체를 간단하게 반환하는), 또는 키워드 SESSIONTIMEZONE 또는 DBTIMEZONE를 입력할수 있다. time_zone_name에 대한 유효한 값을 표시하려면, V$TIMEZONE_NAMES 동적 performance view의 TZNAME열을 질의한다.

주 의 :

Timezone지역 이름은 서머 타임 기능에 의해 필요해진다.지역 이름은 2개의 time zone 파일에 의해 저장된다. 기본적인 time zone 파일은 퍼포먼스를 최대로 하기 위해 단지 일반적인 time zones을 가진 작은 파일이다. 만약 time zone이 기본적 파일이 아니라면, ORA_TZFILE 환경 변수의 방법에 의하여 완전한(큰) 파일에 Path를 지정할때 까지 서머타임은 지원되지 않는다.

예제

다음 예제는 UTC로부터 US/Eastern(동부) 시간의 time zone offset을 반환한다.

SELECT TZ_OFFSET('US/Eastern') FROM DUAL;

TZ_OFFS
-------
-04:00


GREATEST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

GREATEST

문법

greatest::=
Description of greatest.gif follows

그림 설명

목적

GREATEST함수는 하나 이상의 인수중에서 가장 큰 값을 반환한다. 오라클 데이터 베이스는 반환되는 타입을 정의 하기 위해 첫번째 expr을 이용한다. 만약 첫번째 expr이 수치형이라면, 오라클은 수치 순위가 가장 높은 인수를 정의하여, 비교 전에 나머지 인수를 그 데이터 형으로 암묵적으로 변환하고, 그 데이터형을 되돌린다. 만약 첫번째 expr이 수치형이 아니라면, 비교전에 첫번째 인수뒤의 expr을 암묵적으로 첫번째 expr로 변환한다.

오라클 데이터 베이스는 nonpadded 비교 규칙을 이용하여 각 expr을 비교한다. 문자 비교는 데이터 베이스 세트에서 문자의 값에 근간하여 비교한다. 만약 문자가 가장 높은 순위의 문자세트 값이라면, 다른 것보다 크다. 만약 함수에 의해 반환되는 값이 문자 데이터라면, 그것의 데이터형은 항상 VARCHAR2이다.

참고 : 문자 타입의 비교 법칙

  - DATA TYPE, CHAR, VARCHAR2, CHARACTER,문자열 비교법칙

  - ORACLE에서 문자열을 비교하기 위해 Blank-Padded Comparison Semantics과 Nonpadded Comparison Semantics 이라는 방법을 사용한다.

여기에서 주의할 점은 Blank-Padded Comparison Semantics과 Nonpadded Comparison semantics의 결과가 항상 일치하는 것이 아니라는 점이다.

그러면 사례를 통해 두 비교방식에 대하여 알아보도록 하자.

Blank Padded Comparison | Nonpadded Comparison
'ab' > 'aa' | 'ab' > 'aa'
'ab' > 'a ' | 'ab' > 'a '
'ab' > 'a' | 'ab' > 'a'
'ab' = 'ab' | 'ab' = 'ab'
'a ' = 'a' | 'a ' > 'a'

위의 사례를 보면 비교되는 문자열이 Blank를 포함하고 있으면 padding과 non padding이 다른 결과를 나타내고 있다.

1.Blank-Padded Comparison Semantics

      • 비교되는 두 값이 서로 다른 길이를 가질 경우에 길이가 짧은 쪽에 공백을 추가하여 길이를 동일하게 한다.
      • 서로 다른 문자 값이 나타날 때까지 문자 단위로 비교를 수행한다.
      • 서로 다른 값이 나타나면 문자 값이 큰 컬럼이 크다고 판단하고 비교를 종료한다. 그러나 서로 다른 값이 나타나지 않으면 중간에 어떤 유효한 값이 나타날 지를 알 수가 없기 때문에 끝까지 비교를 하게 된다. 만약 끝까지 비교를 하고도 다른 문자가 나타나지 않으면 같다고 판단한다.

Oracle에서 이 비교방식을 사용하는 경우는 다음과 같다.

      • 양쪽 모두가 CHAR 혹은 NCHAR 타입인 경우
      • 양쪽 모두가 문자타입의 상수일 경우
      • 사용자 함수에서 반환된 값

2.Nonpadded Comparison Semantics

      • 서로 다른 문자 값이 나타날 때까지 문자 단위로 비교를 수행한다.
      • 서로 다른 값이 나타나면 문자 값이 큰 컬럼이 크다고 판단하고 비교를 종료한다. 만약 값이 같다면 길이가 짧은 컬럼만큼만 비교한 후 각 컬럼의 길이를 비교하여 길이가 긴 컬럼이 크다고 판단한다.

Oracle에서 이 비교방식을 사용하는 경우는 다음과 같다.

      • 비교되는 값 중에 VARCHAR2 혹은 NVARCHAR2가 있을 경우

예제

다음 문장은 가장 큰 값을 가지는 문자열을 선택한다.

SELECT GREATEST ('HARRY', 'HARRIOT', 'HAROLD')
       "Greatest" FROM DUAL;

Greatest
--------
HARRY


LEAST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LEAST

문법

least::=
Description of least.gif follows
Description of the illustration least.gif

목적

LEAST함수는 인수 EXPR의 리스트 중에서 가장 작은 값을 반환을 한다. 첫번째 이후의 모든 expr들은 비교전에 첫번째 expr의 데이터 형으로 암묵적으로 변환된다. 만약 이 함수에 의해 반환된 값이 문자 데이터이면, 데이터 형은 항상 VARCHAR2이다.

예제

다음 문장은 최소값을 가지는 문자열을 선택한다.

SELECT LEAST('HARRY','HARRIOT','HAROLD') "LEAST"
     FROM DUAL;

LEAST
------
HAROLD


ASCIISTR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ASCIISTR

문법

asciistr::=
Description of asciistr.gif follows

그림 설명

목적

ASCIISTR함수는 주어진 문자열의 아스키 문자열을 반환한다.

ASCIISTR함수는 임의의 문자 세트의 문자열을 취해서, 문자열의 ASCII 문자열을 반환한다. ASCII 이외의 문자는 \xxxx 형태로 변경된다. xxxx는 UTF-16 코드 단위이다.

예제

다음 예제는 텍스트 문자열 "ABÄCDE"을 아스키 문자열로 반환 :

SELECT ASCIISTR('ABÄCDE') FROM DUAL;

ASCIISTR('
----------
AB\00C4CDE


BIN_TO_NUM

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

BIN_TO_NUM

문법

bin_to_num::=
Description of bin_to_num.gif follows

그림 설명 : bin_to_num(인수)

목적

BIN_TO_NUM 함수는 비트(2진수) 벡터를 동등한 수치(10진수)로 변환한다.( 2진수를 10진수로 변환) 이 함수에 대한 각 인수는 2진수의 비트를 나타낸다. 이 함수는 인수로서 임의의 수치 데이터형 또는 암묵적으로 NUMBER로 변환가능한 수치 이외의 데이터형을 취한다. 각 expr은 0 또는 1을 평가될 필요가 있다. 이 함수는 오라클 NUMBER를 반환한다.

예제

다음 예제는 바이너리 값을 수치로 변환(2진수를 10진수로 변경). :

SELECT BIN_TO_NUM(1,0,1,0) FROM DUAL;

BIN_TO_NUM(1,0,1,0)
-------------------
                 10


CAST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CAST

문법

cast::=
Description of cast.gif follows

그림 설명

목적

CAST 함수는 데이터 형식이나 collection 형식을 다른 데이터 형식이나 collection 형식으로변환한다.

CAST함수는 편성된 데이터 타입 또는 컬렉션 타입 값을 다른 편성된 데이터 타입 또는 컬렉션 타입으로 변경한다. 이름이 없는 피연산자(일자 또는 서브쿼리의 결과 세트와 같은) 또는 타입 호환 데이터타입 또는 명명된 컬렉션에서 명명된 컬렉션(VARRAY 또는 중첩테이블)을 형변환 할수있다. Type_name은 편성된 데이터형 또는 컬렉션 타입일 필요가 있고, 피연산자는 편성된 데이터형일 필요가 있고, 컬렉션 값을 평가할 필요가 있다.

피연자에서, expr은 평선 데이터형, 컬렉션 타입, AnyData타입의 인트턴스중에 하나일수 있다. 만약 expr이 AnyData 타입의 인스턴스라면, CAST함수는 AnyData 인스턴스의 값을 추출을 시도하고, 만약 cast taget 타입과 일치하면 값을 반환하고, 일치하지 않으면 Null을 반환한다. MULTISET은 서브쿼리의 결과 세트를 취해 오라클 데이터베이스에 알리고, 컬렉션 값을 반환한다. Table 7-1 은 편성된 데이터형을 취해서 다른 편성 데이터형으로 형변환할수 있는지 보인다.(CAST함수는 LONG,LONG RAW,LOB 데이터형, 오라클 지원 형태를 지원하지 않는다.)

Table 7-1 편성된 데이터형의 형변환

 | from BINARY_FLOAT, BINARY_DOUBLE | from CHAR, VARCHAR2 | fromNUMBER | from DATETIME / INTERVAL (Note 1) | fromRAW | from ROWID, UROWID (Note 2) | from NCHAR, NVARCHAR2
to BINARY_FLOAT, BINARY_DOUBLE | X | X | X | — | — | — | X
to CHAR, VARCHAR2 | X | X | X | X | X | X | —
to NUMBER | X | X | X | — | — | — | X
to DATE, TIMESTAMP, INTERVAL | — | X | — | X | — | — | —
to RAW | — | X | — | — | X | — | —
to ROWID, UROWID | — | X | — | — | — | Xa | —
to NCHAR, NVARCHAR2 | X | — | X | X | X | X | X

주1: Datetime/interval은 DATE, TIMESTAMP, TIMESTAMP WITH TIMEZONE, INTERVAL DAY TO SECOND, and INTERVAL YEAR TO MONTH을 포함한다.

주2: 만약 UROWID가 색인 구성표의 ROWID의 값을 포함하면, UROWID를 ROWID로 형변환 할수 없다.

만약 명명된 컬렉션 타입을 다른 명명된 컬렉션 타입으로 형변환을 원한다면, 양쪽 컬렉션의 요소는 같은 형태일 필요가 있다.

만약 서브쿼리의 결과 세트가 다중 행을 평가할수 있다면, MULTISET 키워드를 지정할 필요가 있다. 서브쿼리로 부터 결과 행은 형변환 된 컬렉션값의 요소를 형성한다. MULTISET키워드를 생략하면, 서브쿼리는 스칼라 서브쿼리로서 처리된다.

Built-In Datatype 예제

다음 예제는 스칼라 데이터형과 함께 CAST함수를 이용한다.

SELECT CAST('22-OCT-1997' AS TIMESTAMP WITH LOCAL TIME ZONE)
   FROM dual;

SELECT product_id,
   CAST(ad_sourcetext AS VARCHAR2(30))
   FROM print_media;

Collection 예제

계속되는 CAST예제는 샘플 주문 엔트리 스키마oe에 기초하여 cust_address_typ에 근거한다.

CREATE TYPE address_book_t AS TABLE OF cust_address_typ;
/
CREATE TYPE address_array_t AS VARRAY(3) OF cust_address_typ;
/
CREATE TABLE cust_address (
   custno            NUMBER,
   street_address    VARCHAR2(40),
   postal_code       VARCHAR2(10),
   city              VARCHAR2(30),
   state_province    VARCHAR2(10),
   country_id        CHAR(2));

CREATE TABLE cust_short (custno NUMBER, name VARCHAR2(31));

CREATE TABLE states (state_id NUMBER, addresses address_array_t);

이 예제는 서브쿼리를 형변환한다.

SELECT s.custno, s.name,
   CAST(MULTISET(SELECT ca.street_address,
                        ca.postal_code,
                        ca.city,
                        ca.state_province,
                        ca.country_id
                 FROM cust_address ca
                 WHERE s.custno = ca.custno)
   AS address_book_t)
FROM cust_short s;

CAST는 varray타입 열을 중첩 테이블로 변환한다.

CAST converts a varray type column into a nested table:

SELECT CAST(s.addresses AS address_book_t)
   FROM states s
   WHERE s.state_id = 111;

다음 오브젝트는 이후 예제의 기초를 생성한다.

CREATE TABLE projects
   (employee_id NUMBER, project_name VARCHAR2(10));

CREATE TABLE emps_short
   (employee_id NUMBER, last_name VARCHAR2(10));

CREATE TYPE project_table_typ AS TABLE OF VARCHAR2(10);
   /

다음 MULTISET 표현의 예제는 위 오브젝트를 이용한다.

The following example of a MULTISET expression uses these objects:

SELECT e.last_name,
   CAST(MULTISET(SELECT p.project_name
   FROM projects p
   WHERE p.employee_id = e.employee_id
   ORDER BY p.project_name)
   AS project_table_typ)
FROM emps_short e;


CHARTOROWID

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CHARTOROWID

문법

chartorowid::=
Description of chartorowid.gif follows

그림 설명 : chartorowid(char)

목적

CHARTOROWID함수는 CHAR, VARCHAR2, NCHAR, or NVARCHAR2 데이터형태의 값으로부터 ROWID형으로 변환한다.

이 함수는 직접적으로 CLOB데이터형을 지원하지 않는다. 그러나, 암묵적 데이터 변환을 통하여 인수로 전달될수 있다.

예제

다음 예제는 문자 표기 rowid를 rowid로 변환한다.(이 함수는 다른 데이터베이스따라 다른 rowid를 반환)

SELECT last_name FROM employees
   WHERE ROWID = CHARTOROWID('AAAFd1AAFAAAABSAA/');

LAST_NAME
-------------------------
Greene


COMPOSE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COMPOSE

문법

compose::=
Description of compose.gif follows

그림 설명

목적

COMPOSE함수는 인수로써 임의의 데이터형 문자열을 취하고, 입력된것과 같은 문자 세트에서 완전한 정규화된 형태의 유니코드를 반환한다. char은 임의의 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB 데이터 형이다. 예를들어, 모음 변이 코드 포인트에 의해 정형화된 o 코드 포인트는 o-모음변이 코드 포인트로 반환된다.

예제

다음 예제는 o-모음 변이 코드 포인트를 반환한다.

SELECT COMPOSE ( 'o' || UNISTR('\0308') ) FROM DUAL;

CO
--
ö

See Also:

UNISTR


CONVERT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CONVERT

문법

convert::=
Description of convert.gif follows

그림 설명

목적

CONVERT함수는 문자세트를 다른 문자세트로 문자열을 변환한다. 반환되는 데이터형은 VARCHAR2이다.

  • 인수 char은 변환되는 값이다. char은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB데이터형중에 하나이다.

  • 인수 dest_char_set은 char이 변환되는 문자 세트의 이름이다.

  • 인수 source_char_set는 char이 데이터 베이스에 저장되는 문자 세트의 이름이다. 기본 값은 데이터베이스 문자세트이다.

결과와 소스 문자 세트 인수는 문자(literal) 또는 문자 세트의 이름을 포함한 열을 지정할수있다.

예제

다음 예제는 Latin-1문자열을 ASCII로 변환하는 문자 세트를 설명한다. 같은 문자열을 WE8ISO8859P1 데이터 베이스로부터 US7ASCII데이터 베이스로 임포트 할 경우와 같은 결과를 얻을수 있다.

SELECT CONVERT('Ä Ê Í Ó Ø A B C D E ', 'US7ASCII', 'WE8ISO8859P1')
   FROM DUAL;

CONVERT('ÄÊÍÓØABCDE'
---------------------
A E I ? ? A B C D E ?

일반적인 문제 세트는 다음을 포함한다.

  • US7ASCII: US 7-bit ASCII character set

  • WE8DEC: 서유럽 8-bit character set

  • F7DEC: DEC 프랑스 7-bit character set

  • WE8EBCDIC500: IBM 서유럽 EBCDIC Code Page 500

  • WE8ISO8859P1: ISO 8859-1 서유럽 8-bit character set

  • UTF8: Unicode 3.0 UTF-8 국제 character set, CESU-8 compliant

  • AL32UTF8: Unicode 3.1 UTF-8 국제 character set


오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

DECOMPOSE

문법

decompose::=
Description of decompose.gif follows

그림 설명

목적

DECOMPOSE함수는 UNICODE 문자에 유용하다. DECOMPOSE함수는 임의의 데이터형의 문자열을 인수로 취해서, 입력과 같은 문자 세트로 분해후의 UNICODE 문자열을 반환한다. 예를들어, O umlaut(모음변이)코드 포인트는 Umlaut 코드 포인트에 따르는 "o" 코드 포이트와 같이 반환된다.

  • string은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB의 데이터 형이다.

  • CANONICAL은 원천 문자열을 재구성(예를들어 COMPOSE함수를 이용하여)을 허용한 표준적인 분해를 야기한다. 이것이 기본.

  • COMPATIBILITY는 호환 모드에서 분해를 야기한다. 이 모드에서, 재구성은 가능하지 않다. 이 모드는 예를들어서, 반각과 전각 katakana문자 분해를 하는경우와 같은, 재구성이 외적 서식 또는 스타일 정보 없이 바람직하지 않는 곳에 유용하다.

예제

다음 예제는 문자열 "Châteaux" 를 요소 코드 포인트로 분해한다.

SELECT DECOMPOSE ('Châteaux') FROM DUAL;

DECOMPOSE
---------
Cha^teaux


HEXTORAW

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

HEXTORAW

문법

hextoraw::=
Description of hextoraw.gif follows

그림 설명

목적

HEXTORAW함수는 char,varchar2,nachr,nvarchar2 등의 문자로 주어지는 16진수를 raw값으로 변환한다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나, 암묵적 데이터 변환을 통해 인수로 전달될수 있다.

예제

다음 예제는 Raw 열을 이용하여 간단한 테이블을 생성하고, RAW에 변환된 16진수 값을 삽입한다.

CREATE TABLE test (raw_col RAW(10));

INSERT INTO test VALUES (HEXTORAW('7D'));

참 조 :

"RAW and LONG RAW Datatypes " and RAWTOHEX


RAWTOHEX

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

RAWTOHEX

문법

rawtohex::=
Description of rawtohex.gif follows

그림 설명

목적

RAWTOHEX함수는 RAW을 16진수의 문자로 변환한다. Raw인수는 RAW 데이터형일 필요가 있다.

만약 PL/SQL 블럭에서 호출하는경우, 이 함수에 대하여 BLOB인수를 지정할수 있다.

예제

다음 예제는 RAW열 값의 16진수 값을 반환한다.

SELECT RAWTOHEX(raw_column) "Graphics"
   FROM graphics;

Graphics
--------
7D

See Also:

"RAW and LONG RAW Datatypes " and HEXTORAW


RAWTONHEX

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

RAWTONHEX

문법

rawtonhex::=
Description of rawtonhex.gif follows

그림 설명

목적

RAWTONHEX함수는 인수 RAW을 NVARCHAR2 형태의 16진수로 변환한다.

예제

다음 예제는 RAW 열값의 16진수 값을 반환한다.

SELECT RAWTONHEX(raw_column),
   DUMP ( RAWTONHEX (raw_column) ) "DUMP"
   FROM graphics;

RAWTONHEX(RA)           DUMP
----------------------- ------------------------------
7D                      Typ=1 Len=4: 0,55,0,68


ROWIDTOCHAR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ROWIDTOCHAR

문법

rowidtochar::=
Description of rowidtochar.gif follows
Description of the illustration rowidtochar.gif

목적

ROWIDTOCHAR함수는 rowid 값을 VARCHAR2형식으로 변환한다. 이 변환의 결과는 항상 18 문자 이다.

예제

다음 예제는 employees 테이블에서 rowid 값을 문자 값으로 변환한다.(결과는 샘플 데이터 베이스의 각 구조마다 다르다.)

SELECT ROWID FROM employees
WHERE ROWIDTOCHAR(ROWID) LIKE '%SAAb%';

ROWID
------------------
AAAFfIAAFAAAABSAAb


ROWIDTONCHAR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ROWIDTONCHAR

문법

rowidtonchar::=
Description of rowidtonchar.gif follows
Description of the illustration rowidtonchar.gif

목적

ROWIDTONCHAR함수는 rowid값을 NVARCHAR2형식으로 변환한다. 이 변환의 결과는 항상 18 문자이다.

예제

다음 예제는 rowid값을 NVARCHAR2 문자열로 변환한다.

SELECT LENGTHB( ROWIDTONCHAR(ROWID) ), ROWIDTONCHAR(ROWID)
   FROM employees;

LENGTHB(ROWIDTONCHAR(ROWID)) ROWIDTONCHAR(ROWID
---------------------------- ------------------
                          36 AAAFfIAAFAAAABSAAA
. . .


SCN_TO_TIMESTAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SCN_TO_TIMESTAMP

문법

scn_to_timestamp::=
Description of scn_to_timestamp.gif follows

그림 설명

목적

SCN_TO_TIMESTAMP함수는 시스템 변경 번호(SCN)로 평가되는 수치를 인수로 취하여, SCN과 관련된 가까운 timestamp를 반환한다. 반환값의 데이터 형은 TIMESTAMP형이다. 이 함수는 SCN과 연관된 timestamp를 아는데 유용하다. 예를들어, 이 함수는 행의 최신 변경을 위하여 timestamp와 연관된 ORA_ROWSCN 의사칼럼(pseudocolumn)을 결합하는데 이용될수 있다.

참 조 :

ORA_ROWSCN and TIMESTAMP_TO_SCN

참고

http://www.oracle.com/kr/support/download/Tech-iSeminar_Flashback.pdf

예제

다음 예제는 행의 최신 변경의 시스템변경번호를 정의 하기 위하여 ORA_ROWSCN 의사칼럼을 이용하고, SCN을 timestamp로 변경하기 위하여 SCN_TO_TIMESTAMP함수를 이용한다.

SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees
   WHERE employee_id = 188;

오라클 Flashback 쿼리를 이용하기 위하여 시스템 변경 번호를 timestamp로 변환하기 위해 이 쿼리를 이용할수 있다.

SELECT salary FROM employees WHERE employee_id = 188;
    SALARY
----------
      3800

UPDATE employees SET salary = salary*10 WHERE employee_id = 188;
COMMIT;

SELECT salary FROM employees WHERE employee_id = 188;
    SALARY
----------
     38000

SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees
   WHERE employee_id = 188;
SCN_TO_TIMESTAMP(ORA_ROWSCN)
---------------------------------------------------------------------------
28-AUG-03 01.58.01.000000000 PM

FLASHBACK TABLE employees TO TIMESTAMP
   TO_TIMESTAMP('28-AUG-03 01.00.00.000000000 PM');

SELECT salary FROM employees WHERE employee_id = 188;
    SALARY
----------
      3800


TIMESTAMP_TO_SCN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TIMESTAMP_TO_SCN

문법

timestamp_to_scn::=
Description of timestamp_to_scn.gif follows

그림 설명

목적

TIMESTAMP_TO_SCN함수는 인수로써 timestamp 값을 취하고, timestamp와 관련된 시스템 변경 번호(system change number,SCN)을 반환한다. 반환된 값의 데이터 형은 NUMBER이다. 이 함수는 특정한 timestamp와 연관된 SCN을 아는데 유용하다.

SCN (System Change Number)
트랜잭션이 커밋될 때마다 오라클 서버는 트랜잭션에 커밋 SCN(System Change Number)을 지정합니다. SCN은 데이터베이스 내에서 유일한 값이며 증가합니다. SCN은 데이터가 데이터 파일로부터 읽혀질 때 데이터를 동기화하고 읽기 일관성(read consistency)을 제공할 수 있도록 오라클 서버가 내부 "time stamp"로 사용합니다. SCN을 사용함으로써 오라클 서버는 운영 체제의 날짜나 시간에 의존하지 않고 일관성 검사를 수행할 수 있습니다.

오라클은 트랙잭션이 커밋될 때, 특정 시점의 데이터베이스 상태를 정의하기 위해 고유번호인 SCN을 할당한다. SCN은 내부적으로 타임스탬프의 역할을 맡으며, 일련 번호로서 고유한 값을 가지고 계속해서 증가한다. 데이터베이스는 언제나 SCN을 기초로 하여 복구되기 때문에 SCN을 통하여 데이터베이스의 읽기 일관성을 제공하게 된다. SCN은 또한 데이터 자체의 읽기 일관성 유지에도 사용된다. 어떤 쿼리가 실행 단계에 이르게 되면 현재의 SCN이 확정되고, 오직 이보다 작거나 같은 SCN을 가진 블록들만이 읽혀지게 된다. 변경된 블록(더 높은 SCN을 가진)에 대해서는 데이터가 롤백 세그먼트로부터 읽혀진다.

참 조 :

SCN_TO_TIMESTAMP for information on converting SCNs to timestamp

예제

다음 예제는 oe.orders 테이블에 행을 삽입하고, 삽입 연산의 시스템 변경 번호를 판단하기 위하여 TIMESTAMP_TO_SCN을 이용한다. (실제로 SCN은 각 시스템 마다 다른 값을 반환)

INSERT INTO orders (order_id, order_date, customer_id, order_total)
   VALUES (5000, SYSTIMESTAMP, 188, 2345);
1 row created.

COMMIT;
Commit complete.

SELECT TIMESTAMP_TO_SCN(order_date) FROM orders
   WHERE order_id = 5000;

TIMESTAMP_TO_SCN(ORDER_DATE)
----------------------------
                      574100


TO_BINARY_DOUBLE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_BINARY_DOUBLE

문법

to_binary_double::=
Description of to_binary_double.gif follows

그림 설명

목적

TO_BINARY_DOUBLE함수는 배정밀도 부동소수점을 반환한다.

  • 인수 expr 은 문자열 또는 NUMBER,BINARY_FLOAT,BINARY_DOUBLE 형태의 수치 값을 지정할수 있다. 만약 expr이 BINARY_DOUBLE이라면, 함수는 expr을 반환한다.

  • expr이 문자열 인경우에만,옵션 'fmt' 와 'nlsparam'인수는 유효하다. 이런 인수는 TO_CHAR(수치)함수와 같은 목적으로 사용된다.

    • 대소문자를 구별하지 않는 'INF'는 양의 무한대로 변환된다.

    • 대소문자를 구별하지 않는 '-INF'는 음의 무한대로 변환된다.

    • 대소문자를 구별하지 않는 'NaN'은 NaN(비수치)으로 변환된다.

expr문자열에는 부동소수점 수 포맷 요소(F,f,D,d)는 사용할수 없다.

문자열 또는 NUMBER로 부터 BINARY_DOUBLE로 변환은 부정확할수 있다. 그 이유는 NUMBER와 문자 형태는 수치 값을 표현하기 위하여 십진수 정밀도를 이용하고, BINARY_DOUBLE는 이진수 정밀도를 이용한다.

BINARY_FLOAT를 BINARY_DOUBLE로 변환은 정확히 수행된다.

참 조 :

TO_CHAR (number) and "Floating-Point Numbers "

예제

다음 예제는 각각 다른 수치 데이터형의 3개의 열을 가지는 테이블을 사용한다.

CREATE TABLE float_point_demo
  (dec_num NUMBER(10,2), bin_double BINARY_DOUBLE, bin_float BINARY_FLOAT);

INSERT INTO float_point_demo
  VALUES (1234.56,1234.56,1234.56);

SELECT * FROM float_point_demo;

   DEC_NUM BIN_DOUBLE  BIN_FLOAT
---------- ---------- ----------
   1234.56 1.235E+003 1.235E+003

다음 예제는 NUMBER 데이터형의 값을 BINARY_DOUBLE의 값으로 변환한다.

SELECT dec_num, TO_BINARY_DOUBLE(dec_num)
  FROM float_point_demo;

   DEC_NUM TO_BINARY_DOUBLE(DEC_NUM)
---------- -------------------------
   1234.56                1.235E+003

다음 예제는 dec_num과 bin_double열로부터 추출된 dump 정보를 비교한다.

SELECT DUMP(dec_num) "Decimal",
   DUMP(bin_double) "Double"
   FROM float_point_demo;

Decimal                     Double
--------------------------- ---------------------------------------------
Typ=2 Len=4: 194,13,35,57   Typ=101 Len=8: 192,147,74,61,112,163,215,10


TO_BINARY_FLOAT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next
ㅛ

TO_BINARY_FLOAT

문법

to_binary_float::=
Description of to_binary_float.gif follows

그림 설명

목적

TO_BINARY_FLOAT함수는 단순정밀도(single-precision) 부동 소수점수(floating-point number)를 반환한다.

  • expr은 NUMBER,BINARY_FLOAT,BINARY_DOUBLE 형태의 문자열 또는 상수값을 지정할수 있다. 만약 expr은 BINARY_FLOAT이라면, 함수는 expr을 반환한다.

  • 옵션 'fmt' 와 'nlsparam' 인수는 expr이 문자열이라면 유효하다. 이런 인수는 TO_CHAR(수치)함수에 대하여 동일한 용도로 사용된다.

    • Incase-sensitive(대소문자가 구별되지 않는) 문자열 'INF'는 양의 무한대로 변환된다.

    • Incase-sensitive(대소문자가 구별되지 않는) 문자열 '-INF'는 음의 무한대로 변환된다.

    • Incase-sensitive(대소문자가 구별되지 않는) 문자열 'NaN'는 NaN(수치가 아닌)으로 변환된다.

문자열 expr에는 부동소수점 수 서식(floating-point number format) 요소(F,f,D,d)는 사용할수 없다.

문자열 또는 NUMBER로부터 BINARY_FLOAT으로 변환은 정확하게 행해지지 않을수 있다. 그 이유는, NUMBER 와 문자 타입은 수치 값을 표현하기 위해 십진법 정밀도를 이용하고, BINARY_FLOAT는 이진법 정밀도를 이용하기 때문이다.

만약 BINARY_DOUBLE값이 BINARY_FLOAT에 의해 지원하는 것 보다 더 많은 정밀도 비트를 이용한다면,BINARY_DOUBLE값으로 부터 BINARY_FLOAT로 변환은 정확하게 행해지지 않는다.

예제

TO_BINARY_DOUBLE 으로 생성한 float_point_demo 테이블을 이용하여, 다음 예제는 NUMBER 데이터형의 값을 BINARY_FLOAT 데이터형의 값으로 변환한다.

SELECT dec_num, TO_BINARY_FLOAT(dec_num)
FROM float_point_demo;

   DEC_NUM TO_BINARY_FLOAT(DEC_NUM)
---------- ------------------------
   1234.56               1.235E+003


TO_CHAR (character)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_CHAR (character)

문법

to_char_char::=
Description of to_char_char.gif follows

그림 설명

목적

TO_CHAR(character)함수는 NCHAR,NVARCHAR2,CLOB,NCLOB 데이터를 데이터 베이스 문자 세트로 변환한다.

예제

다음 예제는 단순 문자열을 문자 데이터로 변환한다.

SELECT TO_CHAR('01110') FROM DUAL;

TO_CH
-----
01110

다음 예제와 TO_CHAR (number) 의 처음 예제를 비교해서 보자.

다음 예제는 pm.print_media로부터 CLOB데이터를 데이터 베이스 문자 세트로 변환한다.

SELECT TO_CHAR(ad_sourcetext) FROM print_media
      WHERE product_id = 2268;

TO_CHAR(AD_SOURCETEXT)
--------------------------------------------------------------------
******************************
TIGER2 2268...Standard Hayes Compatible Modem
Product ID: 2268
The #1 selling modem in the universe! Tiger2's modem includes call management
and Internet voicing. Make real-time full duplex phone calls at the same time
you're online.
**********************************


TO_CHAR (number)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_CHAR (number)

문법

to_char_number::=
Description of to_char_number.gif follows

그림 설명

목적

TO_CHAR(NUBER)함수는 옵션의 number 포맷 fmt를 이용하여 n을 VARCHAR2 데이터형의 값으로 변환한다.값 n은 NUMBER,BINARY_FLOAT 또는 BINARY_DOUBER 데이터형을 지정할수 있다. 만약 fmt를 생략하면, n은 유효자리수를 유지하기 위해서 충분한 길이의 VARCHAR2로 변환한다.

Number 포맷 정보는  "Format Models " 참조.

'nlsparam'인수는 number포맷 요소에 의해 반환되는 이 문자를 지정한다.

  • 소수점 문자.

  • 자리수 단락.

  • 각국 통화 기호.

  • 국제 통화 기호.

이 인수는 아래와 같은 형태를 가질수 있다.

'NLS_NUMERIC_CHARACTERS = ''dg''
   NLS_CURRENCY = ''text''
   NLS_ISO_CURRENCY = territory '

문자 d와 g는 각각 소수점 문자와 자리수 단락을 나타낸다. 이것들은 다른 single-byte문자일 필요가 있다. 인용부호 중에는, 파라미터 주위에 두개 작은 따옴표를 이용할 필요가 있다. 10 문자는 통하 기호에 대하여 사용할수 있다.

만약 'nlsparam' 또는 파라미터 중에 하나를 생략하면, 이 함수는 기본적으로 세션에 대하여 기본적 인수를 사용한다.

예제

다음 문장은 문자열과 number안에 number를 결합하기 위해서 암묵적 변환을 이용한다.

SELECT TO_CHAR('01110' + 1) FROM dual;

TO_C
----
1111

다음 예제와 TO_CHAR (character) 의 처음 예제를 비교하자.

다음 예제에서, 출력은 통화 기호를 왼쪽에 붙인다.

SELECT TO_CHAR(-10000,'L99G999D99MI') "Amount"
FROM DUAL;

Amount
--------------
  $10,000.00-

SELECT TO_CHAR(-10000,'L99G999D99MI',
      'NLS_NUMERIC_CHARACTERS = '',.''
       NLS_CURRENCY = ''AusDollars'' ') "Amount"
FROM DUAL;

Amount
-------------------
AusDollars10.000,00-

옵션 number 포맷 fmt에서, L은 각국 통화 기호를, MI는 뒷편에 (-)부호를  표시낸다.


TO_CLOB

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_CLOB

문법

to_clob::=
Description of to_clob.gif follows

그림 설명

목적

TO_CLOB함수는 LOB열 또는 다른 문자열에서 NCLOB값을 CLOB값으로 변환한다. char의 타입은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB의 데이터형이다. 오라클 데이터 베이스는 기초가 되는 LOB 데이터를 각국어 문자 세트에서 데이터 문자 세트로 변환하는것에 의해서 이 함수를 실행한다.

예제

다음 문장은 pm.print_media테이블의 NCLOB 데이터를 CLOB데이터로 변환하여, 열이 존재하는 데이터에서 CLOB열에 삽입한다.

UPDATE PRINT_MEDIA
   SET AD_FINALTEXT = TO_CLOB (AD_FLTEXTN);


TO_DATE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_DATE

문법

to_date::=
Description of to_date.gif follows

그림 설명

목적

TO_DATE함수는 CHAR,VARCHAR2,NCHAR,NVARCHAR2 데이터형의 char을 날짜형 데이터 타입값으로 변환한다. fmt는 char의 포맷을 지정하는 일시 모델 포맷이다. 만약 fmt를 생략하면, char은 기본적으로 날짜 포맷이다. 만약 fmt가 J(Julian)라면, char은 정수일 필요가 있다.

주 의 :

이 함수는 다른 일시 데이터 타입의 데이터로 변환하지 않는다. 다른 일시 변환 정보에 대하여는 TO_TIMESTAMP , TO_TIMESTAMP_TZ , TO_DSINTERVAL , TO_YMINTERVAL 참고.

기본적 날짜 포맷은 NLS_TERRITORY 초기 모수에 의해 암묵적으로 정의 되고, NLS_DATE_FORMAT 모수에 의해 정확하게 설정할수도 있다.

'nlsparam' 인수는 데이트 변환을 위한 TO_CHAR함수와 같은 목적을 가진다.

char인수에 DATE 값을 가지는 TO_DATE함수를 이용하지 마라.반환되는 DATE값의 처음 두자리는 fmt 또는 기본적 date 포맷에 의존하는 원래의 char과 다를수있다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않느다. 그러나 CLOB는 암묵적 데이터 변환을 통하여 인수에 전달될수 있다.

예제

다음 에제는 문자열을 date로 변환한다.

SELECT TO_DATE('January 15, 1989, 11:00 A.M.',
               'Month dd, YYYY, HH:MI A.M.',
               'NLS_DATE_LANGUAGE = American')
FROM DUAL;

TO_DATE('
---------
15-JAN-89

반환되는 값은 NLS_TERRITORY 파라미터가 'AMERICA'라면 기본적 날짜 포맷을 반영한다. 다른 NLS_TERRITORY값이 설정되어 있는 경우에는 다른 기본적 날짜 서식이 된다.

ALTER SESSION SET NLS_TERRITORY = 'KOREAN';

SELECT TO_DATE('January 15, 1989, 11:00 A.M.',
               'Month dd, YYYY, HH:MI A.M.',
               'NLS_DATE_LANGUAGE = American')
FROM DUAL;

TO_DATE(
--------
89/01/15


TO_LOB

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_LOB

문법

to_LOB::=
Description of to_LOB.gif follows

그림 설명

목적

TO_LOB함수는 long_column 열에서 LONG또는 LONG ROW값을 LOB값으로 변환한다. 이 함수는 단지 LONG 또는 LONG RAW 열과 INSERT구문에서 subquery의 select 리스트에 대해서 적용할수 있다.

이 함수를 이용하기 전에, 변환된 LONG값을 전달 받기 위하여 LOB 열을 생성할 필요가 있다. LONGs 값을 변환하기 위해서, CLOB열을 생성한다. LONG RAW값을 변환하기 위해서, BLOB 열을 생성한다.

만약 Index-organized 테이블을 생성한다면,CREATE TABLE..AS SELECT구문의 subquery에서 LONG 열을 LOB 열로 변환하기 위해서 TO_LOB함수를 이용할수 없다. 반면에, LONG 열을 포함하지 않는 Index-organized 표를 생성하기 위하여, INSERT .. AS SELECT문장에서 TO_LOB함수를 이용한다.

예제

다음 예제에서 가상의 old_table 테이블에서 LONG 데이터에 대한 TO_LOB함수를 이용하는 방법을 알려준다.

CREATE TABLE new_table (col1, col2, ... lob_col CLOB);
INSERT INTO new_table (select o.col1, o.col2, ... TO_LOB(o.old_long_col)
   FROM old_table o;


TO_MULTI_BYTE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_MULTI_BYTE

문법

to_multi_byte::=
Description of to_multi_byte.gif follows

그림 설명

목적

TO_MULTI_BYTE함수는 multibyte 문자를 상응하는 single-byte 문자로 변환한 문자를 반환한다. char의 데이터형은 char,varchar2,nchar,nvarchar2이다. 반환된 값은 char과 같은 데이터형이다.

char안에서 동등한 multibyte를 가지지 않는 single-byte 문자는 single-byte문자로 출력 문자를 나타낸다. 이 함수는 만약 데이터 베이스 문자 세트가 single-byte 나 multibyte문자 양자를 함유하는 경우에 유용하다.

이 함수는 직접으로 CLOB 데이터를 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 변환을 통해서 인수로 전달될수 있다.

예제

다음 예제는 single 바이트 A를 UTF8에서 multibyte A로 변환을 설명한다.

SELECT dump(TO_MULTI_BYTE( 'A')) FROM DUAL;

DUMP(TO_MULTI_BYTE('A'))
------------------------
Typ=1 Len=3: 239,188,161


TO_NCHAR (character)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_NCHAR (character)

문법

to_nchar_char::=
Description of to_nchar_char.gif follows

그림 설명

목적

TO_NCHAR (character)함수는 데이터베이스 문자 세트로 부터 문자열,CLOB,NCLOB 값을 각국 문자 세트로 변환한다.이 함수는 각국 문자 세트로 USING를 이용한 TRANSLATE...USING 함수와 비슷하다.

참 조 :

"Data Conversion " and TRANSLATE ... USING

예제

다음 예제는 pm.print_media테이블로부터 NCLOB 데이터를 national character set으로 변환한다.

SELECT TO_NCHAR(ad_fltextn) FROM print_media
   WHERE product_id = 3106;

TO_NCHAR(AD_FLTEXTN)
------------------------------------------------------------------------
TIGER2  Tastaturen...weltweit fuehrend in Computer-Ergonomie.
TIGER2 3106 Tastatur
Product Nummer: 3106
Nur 39 EURO!
Die Tastatur KB 101/CH-DE ist eine Standard PC/AT Tastatur mit 102 Tasten. Tasta
turbelegung: Schweizerdeutsch.
. NEU: Kommt mit ergonomischer Schaumstoffunterlage.
. Extraflache und ergonimisch-geknickte Versionen verfugbar auf Anfrage.
. Lieferbar in Elfenbein, Rot oder Schwarz.


TO_NCHAR (datetime)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_NCHAR (datetime)

문법

to_nchar_date::=
Description of to_nchar_date.gif follows

그림 설명

목적

TO_NCHAR (datetime)함수는 데이터베이스 문자세트로 부터 datetime,DATE의 구간값, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL MONTH TO YEAR, INTERVAL DAY TO SECOND데이터형을 national character set으로 변환한다.

예제

다음 예제는 순서 상태가 9인 모든 주문의 order_date를 national character set으로 변환한다.

SELECT TO_NCHAR(order_date) FROM orders
   WHERE order_status > 9;

TO_NCHAR(ORDER_DATE)
----------------------------
14-SEP-99 08.53.40.223345 AM
13-SEP-99 09.19.00.654279 AM
27-JUN-00 08.53.32.335522 PM
26-JUN-00 09.19.43.190089 PM
06-DEC-99 01.22.34.225609 PM


TO_NCHAR (number)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_NCHAR (number)

문법

to_nchar_number::=
Description of to_nchar_number.gif follows

그림 설명

목적

TO_NCHAR (number)함수는 n을 national character set으로 변환한다. 값 n은 NUMBER,BINARY_FLOAT,BINARY_DOUBLE를 지정할수 있다. 이 함수는 인수와 같은 데이터형의 값을 반환한다. 옵션 fmt와 n에 상응하는 'nlsparam'은 DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL MONTH TO YEAR, or INTERVAL DAY TO SECOND 데이터형을 가진다.

예제

다음 예제는 oe.orders테이블에서 customer_id값을 national character set으로 변환한다.

SELECT TO_NCHAR(customer_id) "NCHAR_Customer_ID"  FROM orders
   WHERE order_status > 9;

NCHAR_Customer_ID
-----------------
102
103
148
149
148


TO_NCLOB

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_NCLOB

문법

to_nclob::=
Description of to_nclob.gif follows

그림 설명

목적

TO_NCLOB함수는 LOB열 또는 다른 문자열에서 CLOB값을 NCLOB값으로 변환한다.char은 CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOB 데이터형이다. 오라클 데이터 베이스는 char의 데이터베이스 문자 세트에서 문자 세트를 national character set로 변환하는 것에 의해 이 함수를 실행한다.

예제

다음 예제는 TO_NCLOB함수를 가지고 데이터 변환후 Pm.print_media 테이블의 NCLOB 열에 문자 데이터를 삽입한다.

INSERT INTO print_media (product_id, ad_id, ad_fltextn)
   VALUES (3502, 31001,
      TO_NCLOB('Placeholder for new product description'));


TO_NUMBER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_NUMBER

문법

to_number::=
Description of to_number.gif follows

그림 설명

목적

TO_NUMBER함수는 expr을 NUMBER 데이터형의 값으로 변환한다. expr은 BINARY_FLOAT 이거나 BINARY_DOUBLE값 또는 옵션의 포맷 모델 fmt에 의해 지정된 포맷에서 수치를 포함한 데이터형 CHAR,VARCHAR2,NCHAR,NVARCHAR2의 값을 지정할수 있다.

이 함수는 직접적으로 CLOB데이터를 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 컨버젼을 통해 인수로 전달될수 있다.

예제

다음 예제는 문자열 데이터를 수치로 변환한다.:

UPDATE employees SET salary = salary +
   TO_NUMBER('100.00', '9G999D99')
   WHERE last_name = 'Perkins';

이 함수에서 'nlsparam'인수는 number 변환에 대한 TO_CHAR함수와 같은 목적으로 사용된다. TO_CHAR (number) 를 참조.

SELECT TO_NUMBER('-AusDollars100','L9G999D99',
   ' NLS_NUMERIC_CHARACTERS = '',.''
     NLS_CURRENCY            = ''AusDollars''
   ') "Amount"
     FROM DUAL;

    Amount
----------
      -100


TO_SINGLE_BYTE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TO_SINGLE_BYTE

문법

to_single_byte::=
Description of to_single_byte.gif follows

그림 설명

목적

TO_SINGLE_BYTE함수는multibyte문자를 그에 상응하는 single-byte문자로 변환하여 char을 반환한다. char은 CHAR,VARCHAR2,NCHAR,NVARCHAR2일수 있다. 반환된 값은 char과 같은 데이터형이다.

char에서 동등한 single-byte가 없는 multibyte문자는 multibyte문자로 출력된다. 이 함수는 만약 데이터 베이스 문자세트가 single-byte문자와 multibyte문자를 동시에 소유할경우 유용하다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 변환을 통하여 인수로 전달될수 있다.

예제

다음 예제는 UTF8에서 multibyte로 부터 single-byte ASCII A로 변환되는것을 설명한다.

SELECT TO_SINGLE_BYTE( CHR(15711393)) FROM DUAL;

T
-
A


TRANSLATE ... USING

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

TRANSLATE ... USING

문법

translate_using::=
Description of translate_using.gif follows

그림 설명

목적

TRANSLATE ... USING함수는 char을 데이터 베이스 문자세트와 각국어 문자 센트사이의 변환에 대한 지정된 문자 세트로 변경한다.

주 의 :

The TRANSLATE ... USING함수는 주로 ANSI 호환성에 대하여 지원된다. 오라클은 데이터를 데이터베이스나 각국어 문제 세트로 변환하기 위하여 TO_CHAR과 TO_NCHAR함수를 이용하는것을 추천한다. TO_CHAR 과 TO_NCHAR은 단지 문자 데이터만 수용하는 TRANSLATE ... USING보다 다양한 데어터 형을 인수로 취한다.

char 인수가 변환되기 위한 식이다.

  • USING CHAR_CS인수를 지정하면, char은 데이터베이스 문자 세트로 변환한다. 출력 데이터 타입은 VARCHAR2이다.

  • USING NCHAR_CS인수를 지정하면, char은 각국어 문자 세트로 변환한다. 출력 데이터 타입은 NVARCHAR2이다.

이함수는 오라클 CONVERT함수와 유사하나, 입출력 데이터 타입이 NCHAR 또는 NVARCHAR2를 이용하는 경우에는 CONVERT함수대신에 이 함수를 이용해야한다.

참 조 :

CONVERT and UNISTR

예제

다음 예제는 TRANSLATE ... USING함수를 이용하는 법을 보이기 위해서 oe.product_descriptions 테이블을 사용한다.

CREATE TABLE translate_tab (char_col  VARCHAR2(100),
                            nchar_col NVARCHAR2(50));
INSERT INTO translate_tab
   SELECT NULL, translated_name
      FROM product_descriptions
      WHERE product_id = 3501;

SELECT * FROM translate_tab;

CHAR_COL                  NCHAR_COL
------------------------- -------------------------
. . .
                          C per a SPNIX4.0 - Sys
                          C pro SPNIX4.0 - Sys
                          C for SPNIX4.0 - Sys
                          C til SPNIX4.0 - Sys
. . .

UPDATE translate_tab
   SET char_col = TRANSLATE (nchar_col USING CHAR_CS);

SELECT * FROM translate_tab;

CHAR_COL                  NCHAR_COL
------------------------- -------------------------
. . .
C per a SPNIX4.0 - Sys    C per a SPNIX4.0 - Sys
C pro SPNIX4.0 - Sys      C pro SPNIX4.0 - Sys
C for SPNIX4.0 - Sys      C for SPNIX4.0 - Sys
C til SPNIX4.0 - Sys      C til SPNIX4.0 - Sys
. . .


UNISTR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

UNISTR

문법

unistr::=
Description of unistr.gif follows

그림 설명

목적

UNISTR함수는 텍스트 문자열을 인수로 취하고, 각국어 문자 세트로 반환한다. 데이터베이스의 각국어 문자 세트는 AL16UTF16 또는 UTF8중에 하나이다. UNISTR함수는 문자열에서 문자의 Unicode encoding을 지정한 문자에 의해 Unicode 문자열 literals(문자) 지원을 제공한다. 이것은 예를들어 NCHARS 열에서 데이터를 삽입하는것이 유효하다.

Unicode encoding 값은 'xxxx'이 UCS-2 encoding 서식에서 문자의 16진수 값인 곳에서, '\xxxx' 서식을 가진다. 문자열에서 backslash를 포함하려면, 다른 backslash를 추가한다.(\\)

휴대성 및 데이터 보호를 위해서, 오라클은 ASCII 문자와 Unicode encoding값을 지정한 UNISTR 문자열 인수를 추천한다.

예제

다음 예제는 ASCII문자와 Unicode encoding 값을 UNISTR함수에 전달하고, 각국어 문자 세트로 문자열을 반환한다.

SELECT UNISTR('abc\00e5\00f1\00f6') FROM DUAL;

UNISTR
------
abcåñö


BFILENAME

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

BFILENAME

문법

bfilename::=
Description of bfilename.gif follows

그림 설명 : bfilename('디렉토리','파일이름')

목적

BFILENAME함수는 서버 파일 시스템의 물리 LOB 바이너리 파일과 연관된 BFILE locator를 반환한다.

  • 'directory' 는 파일이 실제로 존재하는 서버 파일 시스템에서 Full Path 명에 대한 별명으로써 서버의 데이터 베이스 오브젝트이다.

  • 'filename'은 서버 파일 시스템에서 파일의 이름이다.

SQL문, PL/SQL문, DBMS_LOB 패키지, OCI 운영에서 BFILENAME의 인수로써 사용하기전에 직접적으로 오브젝트를 생성하고, 물리적 파일을 가지는 BFILE값을 관련될 필요가 있다.

아래의 2개의 방법으로 함수를 이용할수 있다.

  • DML에서 BFILE열을 초기화 하는 경우

  • 프로그램 인터페이스에서 BFILE locator에 값을 할당하는 것으로 BFILE데이터에 엑세스하는 경우

디렉토리 인수는 대소문자로 구별된다. 데이터 딕셔너리에 존재하는 이름과 같이 디렉토리 오브젝트 명을 지정했는지 확인할 필요가 있다. 예를 들어서, 만약 "Admin" 디렉토리 오브젝트가 CREATE DIRECTORY문장에서 대소문자가 혼합된 식별자를 인용부호로 둘러쌓아서 생성되었으면, BFILENAME함수를 이용하는 경우 디렉토리 오브젝트를 'Admin'으로 지정할 필요가 있다. 운영 시스템 상에서 대소문자 와 기호의 표기 규칙에 따라서 filename인수를 지정할 필요가 있다.

예 제

다음 예제는 샘플 테이블 pm.print_media 에 행을 삽입한다. 서버 파일 시스템에서 바이너리 파일을 인식하기 위해서 BFILENAME함수를 사용한다.

CREATE DIRECTORY media_dir AS '/demo/schema/product_media';

INSERT INTO print_media (product_id, ad_id, ad_graphic)
   VALUES (3000, 31001,
      bfilename('MEDIA_DIR', 'modem_comp_ad.gif'));


EMPTY_BLOB, EMPTY_CLOB

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

EMPTY_BLOB, EMPTY_CLOB

문법

empty_LOB::=
Description of empty_LOB.gif follows

그림 설명

목적

EMPTY_BLOB()와 EMPTY_CLOB() 함수는 LOB 변수를 초기화하기 위하여 이용될수 있는 공백 LOB 위치를 반환하거나, 또는 INSERT문이나 UPDATE문에서 LOB 열 또는 속성을 EMPTY하기 위해 초기화하기 위해 이용될수 있는 공백 LOB 위치를 반환한다. EMPTY는 LOB가 초기화되지만, 데이터가 있지않는 것을 의미한다. 데이터를 억세스하고, 데이터를 존재하게 하기 전에 오브젝트 타입의 부분인 LOB 속성을 초기화 해야 한다.

EMPTY_BLOB () 함수는 LOB 변수를 초기화하기 위하여 쓰이거나,또는 INSERT 문이나 UPDATE 문에서 empty LOB 위치를 반환한다.

LOB Locators에서 제한

이 함수로부터 반환되는 위치는 DBMS_LOB 패키지 또는 OCI에 대한 파라미터로서 사용될수 없다.

예제

다음 예제는 샘플 pm.print_media 테이블의 ad_photo 열을 EMPTY으로 초기화 한다.

UPDATE print_media SET ad_photo = EMPTY_BLOB();


CARDINALITY

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CARDINALITY

문법

cardinality::=
Description of cardinality.gif follows

그림 설명

목적

CARDINALITY 함수는 중첩 테이블(nested table)에서 원소의 수를 반환한다. 반환된 형식은 number. 만약 nested table이 공백이거나 null 집합인 경우, null을 반환한다.

예제

다음 예제는 pm.print_media 테이블의 중첩 테이블 열 ad_textdocs_ntab내의 요소의 수를 나타낸다.

SELECT product_id, CARDINALITY(ad_textdocs_ntab)
   FROM print_media;

PRODUCT_ID CARDINALITY(AD_TEXTDOCS_NTAB)
---------- -----------------------------
      3060                             3
      2056                             3
      3106                             3
      2268                             3


COLLECT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COLLECT

문법

collect::=
Description of collect.gif follows

그림 설명

목적

COLLECT함수는 임의 형태의 인수 열을 취하여, 선택된 행으로부터 입력된 형태의 중첩 테이블을 생성한다. 이 함수의 결과를 취하기 위하여, CAST 함수 안에서 사용할수 있다.

만약 열이 단독 collection이라면, COLLECT 함수의 출력은 collections의 중첩 테이블이다.

See Also:

CAST

예제

다음 예제는 oe.customers 테이블에서 phone 번호의 varray열로부터 중첩테이블을 생성한다.

CREATE TYPE phone_book_t AS TABLE OF phone_list_typ;
/
SELECT CAST(COLLECT(phone_numbers) AS phone_book_t)
   FROM customers;


POWERMULTISET

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

POWERMULTISET

문법

powermultiset::=
Description of powermultiset.gif follows

그림 설명

목적

POWERMULTISET함수는 입력된 중첩(nested)테이블의 공백이 아닌 모든 부분집합(submultisets)을 소유한 중첩 테이블의 중첩된 테이블을 반환한다.

  • 인수 expr은 중첩 테이블을 평가하는 임의의 식을 지정할수 있다.]

  • 만약 expr이 Null인 경우, 오라클은 NULL을 반환

  • 만약 expr이 비어있는 중첩 테이블인경우, 오라클은 에러를 반환.

  • 중첩 테이블의 원소 형태는 비교가능할 필요가 있다. 스칼라 이외 형태의 비교는 "Comparison Conditions " 참조.

    주 의 :

    이 함수는 PL/SQL에서 지원하지 않는다.

예제

먼저 cust_address_tab_type 데이터형의 중접 테이블을 생성한다.

CREATE TYPE cust_address_tab_tab_typ
  AS TABLE OF cust_address_tab_typ;

다음에,POWERMULTISET펑션을 사용하고,customers_demo겉(표)로부터, 네스트 한 표의 열cust_address_ntab을 선택합니다.

다음에는, POWERMULTISET 함수를 이용한 customers_demo 테이블로 부터 중첩 테이블 열 cust_address_ntab을 선택한다.

SELECT CAST(POWERMULTISET(cust_address_ntab)
         AS cust_address_tab_tab_typ)
  FROM customers_demo;

CAST(POWERMULTISET(CUST_ADDRESS_NTAB) AS CUST_ADDRESS_TAB_TAB_TYP)
  (STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
------------------------------------------------------------------
CUST_ADDRESS_TAB_TAB_TYP(CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP
  ('514 W Superior St', '46901', 'Kokomo', 'IN', 'US')))
CUST_ADDRESS_TAB_TAB_TYP(CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP
  ('2515 Bloyd Ave', '46218', 'Indianapolis', 'IN', 'US')))
CUST_ADDRESS_TAB_TAB_TYP(CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP
  ('8768 N State Rd 37', '47404', 'Bloomington', 'IN', 'US')))
CUST_ADDRESS_TAB_TAB_TYP(CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP
  ('6445 Bay Harbor Ln', '46254', 'Indianapolis', 'IN', 'US')))
. . .

이전 예제에서는 customers_demo 테이블과 데이터를 포함한 중첩 테이블 열이 필요하다.이 테이블과 중첩 테이블 열을 생성하기 위해서는 "Multiset Operators " 참조.


POWERMULTISET_BY_CARDINALITY

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

POWERMULTISET_BY_CARDINALITY

문법

powermultiset_by_cardnlty::=
Description of powermultiset_by_cardnlty.gif follows

그림 설명

목적

POWERMULTISET_BY_CARDINALITY함수는 입력으로써 중첩 테이블과 cardinality(주어진 수학적 집합에서 요소들의 개수)를 취해서, 지정한 카디나리트의 중첩 테이블의 모든 비공백 부분집합(submultisets이라고 불리는)을 소유하는 중첩 테이블의 중첩테이블을 반환한다.

  • expr 은 중첩테이블을 평가하는 임의의 식을 지정할수 있다.

  • cardinality 는 임의의 양의 정수를 지정할수 있다.

  • 만약 expr이 Null인경우, 오라클 데이터 베이스는 NULL을 반환한다.

  • 만약 expr이 공백인 중첩 테이블을 지정한다면, 오라클은 에러를 반환한다.

  • 중첩 테이블의 요소 형태는 비교가능하다. 비 스칼라 형태의 비교 가능성은 "Comparison Conditions " 참조.

    주 의 :

    이 함수는 PL/SQL에서 지원되지 않는다.

예제

우선, 모든 중첩 테이블에서 요소를 복제하여, 중첩테이블의 행의 카디나리티를 2로 증가한다.

UPDATE customers_demo
  SET cust_address_ntab = cust_address_ntab MULTISET UNION cust_address_ntab;
POWERMULTISET_BY_CARDINALITY함수를 이용한 customers_demo 테이블에서 중첩 테이블 열 cust_address_ntab을 선택한다.
SELECT CAST(POWERMULTISET_BY_CARDINALITY(cust_address_ntab, 2)
         AS cust_address_tab_tab_typ)
  FROM customers_demo;

CAST(POWERMULTISET_BY_CARDINALITY(CUST_ADDRESS_NTAB,2) AS CUST_ADDRESS_TAB_TAB_TYP)
  (STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
----------------------------------------------------------------------------------------
CUST_ADDRESS_TAB_TAB_TYP(CUST_ADDRESS_TAB_TYP
  (CUST_ADDRESS_TYP('514 W Superior St', '46901', 'Kokomo', 'IN', 'US'),
   CUST_ADDRESS_TYP('514 W Superior St', '46901', 'Kokomo', 'IN', 'US')))
CUST_ADDRESS_TAB_TAB_TYP(CUST_ADDRESS_TAB_TYP
  (CUST_ADDRESS_TYP('2515 Bloyd Ave', '46218', 'Indianapolis', 'IN', 'US'),
   CUST_ADDRESS_TYP('2515 Bloyd Ave', '46218', 'Indianapolis', 'IN', 'US')))
CUST_ADDRESS_TAB_TAB_TYP(CUST_ADDRESS_TAB_TYP
  (CUST_ADDRESS_TYP('8768 N State Rd 37', '47404', 'Bloomington', 'IN', 'US'),
   CUST_ADDRESS_TYP('8768 N State Rd 37', '47404', 'Bloomington', 'IN', 'US')))
. . .
이전 예제는 customers_demo 테이블과 데이터를 포함한 중첩 테이블 열이 필요하다.
이 표와 중첩 테이블 열을 생성하기 위해서"Multiset Operators " 참조.


SET

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SET

문법

set::=
Description of set.gif follows

그림 설명

목적

SET함수는 중첩 테이블에서 중복을 배제하여 반환한다. 이 함수는 다른 중첩테이블에서 distinct한 요소를 가진 중첩테이블을 반환한다. 반환된 중첩 테이블은 입력된 중첩 테이블과 같은 형태이다.

중첩 테이블의 요소 형태는 비교 가능한 형태일 필요가 있다. nonscalar형태의 가능성에 대하여는 "Comparison Conditions " 참조.

예제

다음 예제는 customers_demo테이블에서 cust_address_ntab 중첩 테이블 열의 unique 요소를 선택한다.

SELECT customer_id, SET(cust_address_ntab) address
FROM customers_demo;

CUSTOMER_ID ADDRESS(STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
----------- ------------------------------------------------------------------------
        101 CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP('514 W Superior St', '46901', 'Kokomo', 'IN', 'US'))
        102 CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP('2515 Bloyd Ave', '46218', 'Indianapolis', 'IN', 'US'))
        103 CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP('8768 N State Rd 37', '47404', 'Bloomington', 'IN', 'US'))
        104 CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP('6445 Bay Harbor Ln', '46254', 'Indianapolis', 'IN', 'US'))
        105 CUST_ADDRESS_TAB_TYP(CUST_ADDRESS_TYP('4019 W 3Rd St', '47404', 'Bloomington', 'IN', 'US'))
. . .

이전 에제는 customers_demo 테이블과 데이터를 가지고 있는 중첩 테이블 열이 필요하다.이 테이블과 중첩 테이블 열을 생성하기 위해서는 "Multiset Operators " 참조


SYS_CONNECT_BY_PATH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_CONNECT_BY_PATH

문법

sys_connect_by_path::=
Description of sys_connect_by_path.gif follows

그림 설명

목적

SYS_CONNECT_BY_PATH함수는 계층적 쿼리에서 유의하다. 이 함수는 루트로 부터 node로 열의 값 Path를 반환환다. column 값은 CONNECT BY 조건에 의해 반환되는 각행을 char에 의해 분리된다.

column과 char의 데이터형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2이다. 반환되는 문자열은 VARCHAR2형이고, column과 같은 문자 집합이다.

SYS_CONNECT_BY_PATH(column, char) 함수는 계층적 쿼리(계층구조)에서만 유효하며, column의 절대 경로를 char로 지정한 문자로 분리하여 반환한다.

예제

다음 예제는 Kochhar이름의 종업원으로 부터 Kochhar 모든 종업원에게 종업원 이름의 Path를 반환한다.

SELECT LPAD(' ', 2*level-1)||SYS_CONNECT_BY_PATH(last_name, '/') "Path"
FROM employees
START WITH last_name = 'Kochhar'
CONNECT BY PRIOR employee_id = manager_id;

Path
---------------------------------------------------------------
 /Kochhar
   /Kochhar/Greenberg
     /Kochhar/Greenberg/Faviet
     /Kochhar/Greenberg/Chen
     /Kochhar/Greenberg/Sciarra
     /Kochhar/Greenberg/Urman
     /Kochhar/Greenberg/Popp
   /Kochhar/Whalen
   /Kochhar/Mavris
   /Kochhar/Baer
   /Kochhar/Higgins
     /Kochhar/Higgins/Gietz
테이블 전치 : http://blogbbs1.media.daum.net/griffin/do/blognews/cafe/read?bbsId=CF01&articleId=13122&pageIndex=17&searchKey=&searchValue=


DEPTH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

DEPTH

문법

depth::=
Description of depth.gif follows

그림 설명

목적

DEPTH함수는 UNDER_PAHT 와 EQUALS_PAHT 조건과 함께 이용되는 보조함수이다. 이 함수는 같은 상관 변수를 가지는 UNDER_PATH조건에 의해 지정된 PATH에서 레벨의 수를 반환한다.

correlation_integer는 임의의 NUMBER 정수이다. 만약 문장이 다중 일차 조건이 포함되어 있다면, 이 보조 함수를 일차 조건과 관련짓기 위해서 사용한다. 1미만의 값은 1로써 취급된다.

이 함수는 UNDER_PATH 조건에 상관관계의 수치를 반환한다.

예제

EQUALS_PATH 와 UNDER_PATH 조건은 2개의 보조 함수 DEPTH와 PATH를 취할 수 있다. 다음 예제는 양쪽 보조 함수의 이용 방법을 나타낸다. 이 예제는 XML Schema warehouse.xsd의 존재성을 가정한다. (created in "Using XML in SQL Statements ").

SELECT PATH(1), DEPTH(2)
   FROM RESOURCE_VIEW
   WHERE UNDER_PATH(res, '/sys/schemas/OE', 1)=1
     AND UNDER_PATH(res, '/sys/schemas/OE', 2)=1;

PATH(1)                          DEPTH(2)
-------------------------------- --------
/www.oracle.com                         1

/www.oracle.com/xwarehouses.xsd         2


EXISTSNODE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

EXISTSNODE

문법

existsnode::=
Description of existsnode.gif follows

그림 설명

목적

EXISTSNODE함수는 node의 존재여부를 확인하여 그 결과를 반환한다. 0은 노드가 남아 있지 않는 경우이고, 1은 아직 노드가 존재하는 경우이다.

EXISTSNODE함수는 지정된 Path 결과를 이용하여 XML 문서를 traversal(순행-트리의 각 노드를 중복 없이 모두 탐색해 나가는 일)하여 임의의 노드가 존재하는지 판단한다. XML 문서와 path를 지정하는 VARCHAR2 XPath문자열을 가지는 XMLType 인스턴스를 인수로써 취한다. 옵션 namespace_string는 접두사에 대한 기본적 맵핑 또는 namespace 맵핑을 지정하는 VARCHAR2 값을 분석할 필요가 있다. namespace맵핑은 오라클 데이터 베이스가 Xpath식을 평가하는경우에 사용한다.

반환되는 값은 NUMBER이다.

  • 만약 문서에 Xpath 순행을 적용한후에 노드가 존재하지 않으면, 0을 반환

  • 만약 노드가 존재한다면 1을 반환.

예제

다음 예제는 샘플 테이블 oe.warehouses의 warehouse_spec 열의 XML path에서 /Warehouse/Dock노드의 존재성에 대하여 테스트한다.

SELECT warehouse_id, warehouse_name
   FROM warehouses
   WHERE EXISTSNODE(warehouse_spec, '/Warehouse/Docks') = 1;

WAREHOUSE_ID WAREHOUSE_NAME
------------ -----------------------------------
           1 Southlake, Texas
           2 San Francisco
           4 Seattle, Washington


EXTRACT (XML)

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

EXTRACT (XML)

문법

extract_xml::=
Description of extract_xml.gif follows
Description of the illustration extract_xml.gif

목적

EXTRACT (XML)함수는EXISTSNODE함수와 유사하다. 이 함수는 VARCHAR2 XPath 문자열을 적용하여, XML 플래그먼트(fragment)를 포함한 XMLType 인스턴스를 반환한다. 옵션의 namespace_string는 기본적 맵핑을 지정한 VARCHAR2 값을 결정하거나, 오라클 데이터 베이스가 XPath 표현을 평가할때 이용하는 접두사에 대한 namespace mapping을 결정한다.

예제

다음 예제는 샘플 테이블 oe.warehouses의 warehouse_spec열의 XML Path의 /Warehouse/Dock 노드의 값을 추출한다.

SELECT warehouse_name, EXTRACT(warehouse_spec, '/Warehouse/Docks')
   "Number of Docks"
FROM warehouses
WHERE warehouse_spec IS NOT NULL;

WAREHOUSE_NAME       Number of Docks
-------------------- --------------------
Southlake, Texas          <Docks>2</Docks>
San Francisco             <Docks>1</Docks>
New Jersey                <Docks/>
Seattle, Washington       <Docks>3</Docks>
다음 예제와 XML 플래그먼트(fragment)의 스칼라값을 반환하는EXTRACTVALUE함수를 비교하자.


EXTRACTVALUE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

EXTRACTVALUE

문법

extractvalue::=
Description of extractvalue.gif follows

그림 설명

EXTRACTVALUE함수는 existsnode와 유사한 함수로써 node의 스칼라 값을 반환.

EXTRACTVALUE함수는 인수로써 XMLType 인스턴스와 XPath 식을 취하여, 결과 노드의 스칼라 값을 반환한다. 그 결과는 싱글 노드,텍스트 노드,속성,요소중에 하나이다. 만약 결과가 요소라면, 그 요소는 자식 노드로써 싱글 text노드를 가져야하고, 이 함수가 반환하는 값은 자식 노드의 값이 된다. 만약 지정한 XPath가 하나 이상의 자식 노드를 가지는 노드를 가르키는 경우이거나, 또는 가르키는 노드가 비 텍스트 노드의 자식노드를 가지는 경우에는 오라클은 에러를 반환한다. 옵션의 namespace_string는 기본적 mapping을 지정한 VARCHAR2값을 결정하거나, 또는 오라클이 XPath 표현을 평가할때 이용하는 접두사에 대한 namespace mapping을 결정한다.

XML 스키마에 근거한 문서로 오라클이 반환값의 형태를 추측할수 있는 경우라면, 적절한 형태의 스칼라 값을 반환한다. 그 외의 경우에는 결과는 VARCHAR2 형태이다. XML 스키마에 근거하지 않는 문서의 경우에는, 반환값은 항상 VARCHAR2이다.

예제

다음 예제는 입력으로써 EXTRACT (XML) 의 예제와 같은 인수를 취한다. 이 함수는 EXTRACT함수와 다르게 XML 플래크먼트(fragment)를 반환하는것이 아니라, XML의 플래그먼트(fragment)의 스칼라 값을 반환한다.

SELECT warehouse_name,
   EXTRACTVALUE(e.warehouse_spec, '/Warehouse/Docks')
   "Docks"
   FROM warehouses e
   WHERE warehouse_spec IS NOT NULL;

WAREHOUSE_NAME       Docks
-------------------- ------------
Southlake, Texas     2
San Francisco        1
New Jersey
Seattle, Washington  3


PATH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

PATH

문법

path::=
Description of path.gif follows

그림 설명

목적

PATH 함수는 under_path나 equals_path의 보조함수로서, 자원의 관계경로를 반환.

PATH함수는 UNDER_PATH와 EQUALS_PATH에서만 이용되는 보조적인 함수이다. 근원적인 조건에서 지정된 자원에서 상대적인 경로를 반환한다.

Correlation_integer는 임의의 NUMBER 정수이고, 이 보조 함수는 주요 조건과 상관되기 위하여 사용된다. 1미만의 값은 1로 취급된다.

참 조 :

EQUALS_PATH and UNDER_PATH

예제

EQUALS_PATH와 UNDER_PATH조건의 보조적 함수를 사용하는 예는 DEPTH 함수를 참조.


SYS_DBURIGEN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_DBURIGEN

문법

sys_dburigen::=
Description of sys_dburigen.gif follows

그림 설명

목적

SYS_DBURIGen함수는 인수로써 하나 또는 이상의 열 또는 속성과 옵션으로 ROWID를 취하여, 특정 열 또는 행 오브젝트에 대한 DBURIType 데이터 타입의 URL을 생성한다. 데이터베이스로부터 XML문서를 검색하기 위해 URL을 사용할수 있다.

참조되는 모든 열 또는 속성은 샘플 테이블에서 존재할 필요가 있다. Primary키의 함수를 수행해야 한다. 즉, 실제적으로 테이블에서 Primary 키와 일치할 필요는 없으나, unique값을 참조해야만한다. 만약 다수의 열을 지정했다면, 마지막 열 이외의 모든 열은 데이터베이스에서 행을 식별하여, 지정된 마지막 열은 행안에서 열을 식별한다.

기복적으로 URL은 포맷된 XML문서를 가르킨다. 만약 문서의 텍스트를 가르키는 경우에는, 옵션 'text()를 지정해야한다.( XML 구문에서, 소문자 텍스트는 키워드이지, 구문 placeholder가 아니다.

만약 열 또는 속성을 포함한 테이블 또는 뷰가 쿼리의 문맥에서 지정된 schema를 소유하지 않는 경우에는, 오라클 데이터베이스는 테이블 명 또는 뷰 명을 public synonym으로서 해석한다.

PUBLIC SYNONYM : 모든 사용자가 사용할 수 있는 SYNONYM( DBA(권한) 만이 생성하고 삭제할 수 있다. )

PRIVATE SYNONYM : SYNONYM 을 생성한 USER만이 사용하는 SYNONYM
(PUBLIC 구문을 생략했을 때 기본으로 사용됨)

이 함수는 입력된 argument에 대한 DBURIType의 URL을 반환한다.

예제

다음 예제는 employee_id=206인 샘플 테이블 hr.employees에서 행의 이메일 열에 대한 DBUriType데이터형의 URL을 생성하기 위해서 SYS_DBURIGen함수를 이용한다.

SELECT SYS_DBURIGEN(employee_id, email)
FROM employees
WHERE employee_id = 206;

SYS_DBURIGEN(EMPLOYEE_ID,EMAIL)(URL, SPARE)
--------------------------------------------------------------------
DBURITYPE('/PUBLIC/EMPLOYEES/ROW[EMPLOYEE_ID=''206'']/EMAIL', NULL)


SYS_XMLAGG

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_XMLAGG

문법

sys_xmlagg::=
Description of sys_xmlagg.gif follows

그림 설명

목적

입력 받은 모든 문서를 하나의 XML문서를 통합한다.

SYS_XMLAgg함수는 expr에 의해 나타나는 모든 XML문서 또는 XML fragment를 통합하고, 단일 XML문서를 생성한다. 기본적 이름 ROWSET을 가지는 새 둘러쌓인 요소를 생성한다. 만약 XML문서를 다른 방법으로 포맷하는 경우는, XMLFormat 오브젝트의 인스턴스인 fmt를 지정한다.

예제

다음 예제는 종업원의 last_name이 문자 R을 가지는 샘플 테이블 employees의 각 행에 대하여 XML문서를 생성하기 위해서 SYS_XMLGEN 함수를 이용하고, 기본적 포위 요소 ROWSET에서 하나의 XML문서에 모든 행을 통합한다.

SELECT SYS_XMLAGG(SYS_XMLGEN(last_name))
   FROM employees
   WHERE last_name LIKE 'R%';

SYS_XMLAGG(SYS_XMLGEN(LAST_NAME))
--------------------------------------------------------------------
<ROWSET>
  <LAST_NAME>Raphaely</LAST_NAME>
  <LAST_NAME>Rogers</LAST_NAME>
  <LAST_NAME>Rajs</LAST_NAME>
  <LAST_NAME>Russell</LAST_NAME>
</ROWSET>


SYS_XMLGEN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_XMLGEN

문법

sys_xmlgen::=
Description of sys_xmlgen.gif follows

그림 설명

목적

스칼라값,object type,xml type 인스턴스를 XML문서로 변형한다.

SYS_XMLGen함수는 데이터 베이스의 특별한 행과 열을 평가하는 식을 취하고, XML문서를 포함하는 XMLtype 타입의 인스턴스를 반환한다. 인수 expr은 스칼라값, 사용자 정의 타입, XMLType 인스턴스를 취한다.

  • 만약 인수 expr이 스칼라 값이라면, 함수는 스칼라 값을 소유한 XML문서를 반환한다.

  • 만약 인수 expr이 type라면, 함수는 XML요소에서 사용자 정의 타입 속성을 맵핑한다.

  • 만약 인수 expr이 XMLType인스턴스라면, 함수는 행에서 기본적 Tag 명을 가지는 XML요소로 문서를 둘러쌓는다.

기본적으로 XML 문서의 요소는 인수 expr의 요소와 일치한다. 예를 들어, 만약 expr이 열 명으로 변환되는경우, XML 둘러쌓인 요소는 같은 열명이 된다. 만약 XML문서를 다른게 서식을 원한다면, XMLFormat 오브젝트의 인스턴스인 fmt를 지정한다.

예제

다음 예제는 employee_id 값이 205dls 샘플 테이블 oe.employees에서 종업원 이메일 ID를 찾아서, EMAIL요소를 가지는 XML문서를 가지는 XMLType의 인스턴스를 생성한다.

SELECT SYS_XMLGEN(email)
   FROM employees
   WHERE employee_id = 205;

SYS_XMLGEN(EMAIL)
-------------------------------------------------------------------
<EMAIL>SHIGGINS</EMAIL>


XMLAGG

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

XMLAGG

문법

XMLAgg::=
Description of XMLAgg.gif follows

그림 설명

목적

XMLAgg함수는 집계 함수이다. XML fragment(조각)의 집합체를 취해서, 집계된 XML 문서를 반환한다. NULL을 반환하는 인수는 결과로부터 제거된다.

XMLAgg는 XMLAgg가 Node의 집합체를 반환하는 점을 제외하고는 SYS_XMLAgg와 유사하다. XMLFormat Object를 이용한 포맷을 받아들이지 않는다. 또한, XMLAgg는 SYS_XMLAgg처럼 요소 태그를 출력에서 둘러싸지 않는다.

Order_by_clause구문에서, 오라클 데이터 베이스는 열의 위치처럼 수치 문자를 설명하지 않고, 단지 수치 문자로 설명한다.

참 조 :

XMLELEMENT and SYS_XMLAGG

예제

다음 예제는 요소의 항목으로써 종업원 작업 ID와 이름과 함께 종업원 요소를 포함한 부서 요소를 산출한다.

SELECT XMLELEMENT("Department",
                  XMLAGG(XMLELEMENT("Employee",
                         e.job_id||' '||e.last_name)
                         ORDER BY last_name))
   as "Dept_list"
FROM employees e
WHERE e.department_id = 30;

Dept_list
-------------------------------------------------------------
<Department>
  <Employee>PU_CLERK Baida</Employee>
  <Employee>PU_CLERK Colmenares</Employee>
  <Employee>PU_CLERK Himuro</Employee>
  <Employee>PU_CLERK Khoo</Employee>
  <Employee>PU_MAN Raphaely</Employee>
  <Employee>PU_CLERK Tobias</Employee>
</Department>

아래 결과는 단일행이다. XMLAgg는 행을 집계하기 때문이다. 다중 그룹에서 반환되는 행을 그룹화 하기 위하여 GROUP BY를 이용할수 있다.

SELECT XMLELEMENT("Department",
      XMLAGG(XMLELEMENT("Employee", e.job_id||' '||e.last_name)))
   AS "Dept_list"
   FROM employees e
   GROUP BY e.department_id;

Dept_list
---------------------------------------------------------
<Department>
  <Employee>AD_ASST Whalen</Employee>
</Department>

<Department>
  <Employee>MK_MAN Hartstein</Employee>
  <Employee>MK_REP Fay</Employee>
</Department>

<Department>
  <Employee>PU_MAN Raphaely</Employee>
  <Employee>PU_CLERK Khoo</Employee>
  <Employee>PU_CLERK Tobias</Employee>
  <Employee>PU_CLERK Baida</Employee>
  <Employee>PU_CLERK Colmenares</Employee>
  <Employee>PU_CLERK Himuro</Employee>
</Department>
. . .


XMLCOLATTVAL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

XMLCOLATTVAL

문법

XMLColattval::=
Description of XMLColattval.gif follows

그림 설명

목적

XMLColAttVal함수는 XML 단편(fragment)을 생성하고, 각각의 XML 단편(fragment)이 속성 name을 포함한 name열을 가지는 결과 XML으로 확장한다. 열명 이외의 다른 name 속성의 값을 변경하기 위해 AS c_alias 구문을 사용할수 있다.

value_expr의 값을 지정해야만한다. 만약 value_expr이 NULL이면, 요소는 반환되지 않는다.

XMLColAttVal의 제한 사항

value_expr에 대하여 오브젝트 타입 열을 지정할수 없다.

예제

다음 예제는 Emp의 항목으로써 중첩된 employee_id,last_name,salary 요소를 가지는 종업원의 부분집합에 대하여 EMP요소를 생성한다. 중첩된 각 요소는 열 이름을 붙이고, 속성값으로써 열 name을 가지는 이름 속성을 가진다.

SELECT XMLELEMENT("Emp",
   XMLCOLATTVAL(e.employee_id, e.last_name, e.salary)) "Emp Element"
   FROM employees e
   WHERE employee_id = 204;

Emp Element
--------------------------------------------------------------------
<Emp>
  <column name="EMPLOYEE_ID">204</column>
  <column name="LAST_NAME">Baer</column>
  <column name="SALARY">10000</column>
</Emp>

이 두개의 함수의 출력을 비교하기 위하여 XMLFOREST를 참조.


XMLCONCAT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

XMLCONCAT

문법

XMLConcat::=
Description of XMLConcat.gif follows
Description of the illustration XMLConcat.gif

목적

XMLConcat함수는 XMLType 인수턴스의 입력 시리즈를 취해서, 각 행에 대하여 요소의 시리즈를 연결하고, 열결된 시리즈를 반환한다. XMLConcat함수는 XMLSequence함수의 반대이다.

Null표현은 결과로부터 삭제된다. 만약 모든 값 표현이 Null이라면, 함수는 Null을 반환한다.

참 조:

XMLSEQUENCE

예제

다음 예제는 종업원의 부분 집합의 이름과 성에 대하여 XML요소를 생성하고, 그 요소들을 연결하여 반환한다.

SELECT XMLCONCAT(XMLELEMENT("First", e.first_name),
                 XMLELEMENT("Last", e.last_name)) AS "Result"
FROM employees e
WHERE e.employee_id > 202;

Result
----------------------------------------------------------------
<First>Susan</First>
<Last>Mavris</Last>

<First>Hermann</First>
<Last>Baer</Last>

<First>Shelley</First>
<Last>Higgins</Last>

<First>William</First>
<Last>Gietz</Last>

4 rows selected.


XMLELEMENT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

XMLELEMENT

문법

XMLElement::=
Description of XMLElement.gif follows
Description of the illustration XMLElement.gif

XML_attributes_clause::=
Description of XML_attributes_clause.gif follows
Description of the illustration XML_attributes_clause.gif

목적

XMLElement함수는 identifier에 대한 요소명, 요소에 대한 속성의 옵션 집합, 요소의 항목으로 구성된 인수를 취한다. 이 함수는 XMLType 타입의 instance를 반환한다. XMLElement함수는 반환된 XML에서 속성을 포함할수 있는 점을 제외하고 SYS_XMLGen함수와 유사하다. 그러나 XMLFormat Object를 이용한 포맷팅을 수용하지 않는다.

XMLElement함수는 다음 세션의 예제처럼 중첩된 구조를 가진 XML문서를 생성하기 위한 전형적으로 중첩된다.

오라클 데이터베이스는 둘러쌓인 태그를 이용하는 identifier에 대한 값을 지정할 필요가 있다. 이 식별자는 열이름 또는 행 참조일 필요는 없다. 식 또는 Null을 지정할수 없다.

XML_attritutes_clause에서, 만약 value_expr이 Null이라면, 그 값 표현에 대한 속성은 생성되지 않는다. value_expr의 형태는 Object 형태 또는 집합을 지정할수 없다.

요소 집합으로 구성된 Objects는 XMLATTRIBUTES 키워드를 따른다.

  • 만약 value_expr이 스칼라 표현이라면, clause를 생략할수 있고, 오라클은 요소이름으로써 열명을 이용한다.

  • 만약 value_expr이 오브젝트 타입이거나 집합이라면, AS구문은 필수적이고, 오라클은 둘러쌓인 태그로써 지정된 c_alias를 이용한다.

  • 만약 value_expr이 Null이라면, 요소는 그 값요소를 생성하지 않는다.

    참 조:

    SYS_XMLGEN

예제

다음 예제는 종업원의 이름과 고용일을 제공하는 중첩 요소를 가지는 종업원의 시리즈에 대하여 Emp 요소를 생성한다.

SELECT XMLELEMENT("Emp", XMLELEMENT("Name",e.job_id||' '||e.last_name),
                         XMLELEMENT("Hiredate", e.hire_date)) as "Result"
FROM employees e WHERE employee_id > 200;

Result
-------------------------------------------------------------------
<Emp>
  <Name>MK_MAN Hartstein</Name>
  <Hiredate>17-FEB-96</Hiredate>
</Emp>

<Emp>
  <Name>MK_REP Fay</Name>
  <Hiredate>17-AUG-97</Hiredate>
</Emp>

<Emp>
  <Name>HR_REP Mavris</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

<Emp>
  <Name>PR_REP Baer</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

<Emp>
  <Name>AC_MGR Higgins</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

<Emp>
  <Name>AC_ACCOUNT Gietz</Name>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>

6 rows selected.

The following similar example uses the XMLElement function with the XML_attributes_clause to create nested XML elements with attribute values for the top-level element:

SELECT XMLELEMENT("Emp",
      XMLATTRIBUTES(e.employee_id AS "ID", e.last_name),
      XMLELEMENT("Dept", e.department_id),
      XMLELEMENT("Salary", e.salary)) AS "Emp Element"
   FROM employees e
   WHERE e.employee_id = 206;

Emp Element
---------------------------------------------------------------
<Emp ID="206" LAST_NAME="Gietz">
  <Dept>110</Dept>
  <Salary>8300</Salary>
</Emp>

Notice that the AS identifier clause was not specified for the last_name column. As a result, the XML returned uses the column name last_name as the default.

Finally, the next example uses a subquery within the XML_attributes_clause to retrieve information from another table into the attributes of an element:

SELECT XMLELEMENT("Emp", XMLATTRIBUTES(e.employee_id, e.last_name),
   XMLELEMENT("Dept", XMLATTRIBUTES(e.department_id,
   (SELECT d.department_name FROM departments d
   WHERE d.department_id = e.department_id) as "Dept_name")),
   XMLELEMENT("salary", e.salary),
   XMLELEMENT("Hiredate", e.hire_date)) AS "Emp Element"
   FROM employees e
   WHERE employee_id = 205;

Emp Element
-------------------------------------------------------------------
<Emp EMPLOYEE_ID="205" LAST_NAME="Higgins">
  <Dept DEPARTMENT_ID="110" Dept_name="Accounting"/>
  <salary>12000</salary>
  <Hiredate>07-JUN-94</Hiredate>
</Emp>


XMLFOREST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

XMLFOREST

문법

XMLForest::=
Description of XMLForest.gif follows
Description of the illustration XMLForest.gif

목적

XMLForest함수는 각 인수의 파라미터를 XML로 변환하고, 변환된 인수를 연결한 XML 단편(fragment)을 반환한다.

  • 만약  value_expr이 스칼라 표현이라면, AS구문은 생략할수 있고, 오라클 데이터베이스는 요소명으로써 열명을 사용한다.

  • 만약  value_expr이 오브젝터 형 또는 콜렉션이라면, AS 구문은 필수적이고, 오라클 데이터 베이스는 tag로 둘러쌓인 지정된 c_alias를 이용한다.

  • 만약  value_expr이 Null이라면, value_expr에 대한 요소는 생성되지 않는다.

예제

다음 예제는 종업원의 부분집합에 대하여 EMP요소를 생성한다. EMP항목으로써 중첩된 employee_id,last_name,salary 요소를 가진다.

SELECT XMLELEMENT("Emp",
   XMLFOREST(e.employee_id, e.last_name, e.salary))
   "Emp Element"
   FROM employees e WHERE employee_id = 204;

Emp Element
----------------------------------------------------------------
<Emp>
  <EMPLOYEE_ID>204</EMPLOYEE_ID>
  <LAST_NAME>Baer</LAST_NAME>
  <SALARY>10000</SALARY>
</Emp>

이 두 함수의 출력을 비교하기 위해서 XMLCOLATTVAL 참조.


XMLSEQUENCE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

XMLSEQUENCE

문법

XMLSequence::=
Description of XMLSequence.gif follows

그림 설명

목적

XMLSequence함수는 2개의 형태가 있다.

  • 첫번째 형태는 입력으로써 XMLType 인스턴트를 취하고, XMLType에 있는 top-level 노드의 varray를 반환한다.

  • 두번째 형태는 입력으로써 XMLFormat 오브젝트의 옵션 인스턴스를 가지는 REFCURSOR 인스턴스를 취하고, 커서의 각 행에 대하여 XMLSequence 형태로써 XML문서를 반환한다.

XMLSEQUENCE함수는 XMLType의 컬렉션을 반환하기 위해서, 이 함수를 테이블 구문에서 복수행에서 컬렉션 값을 unnest하기위해 이용할수 있다. SQL 쿼리에서 더욱 더 진행할수 있다.

예제

다음 예제는 XMLSequence함수가 VARRAY 단일 요소 문서에서 복수 요소를 가지는 XML문서로 나누는 방법을 보인다. 이 예제에서, 테이블 키워드가 서브쿼리의 FROM구문에서 이용할수 있는 컬렉셕 테이블 값을 간주하도록 오라클 데이터베이스를 가르킨다.

SELECT EXTRACT(warehouse_spec, '/Warehouse') as "Warehouse"
   FROM warehouses WHERE warehouse_name = 'San Francisco';

Warehouse
------------------------------------------------------------
<Warehouse>
  <Building>Rented</Building>
  <Area>50000</Area>
  <Docks>1</Docks>
  <DockType>Side load</DockType>
  <WaterAccess>Y</WaterAccess>
  <RailAccess>N</RailAccess>
  <Parking>Lot</Parking>
  <VClearance>12 ft</VClearance>
</Warehouse>

1 row selected.

SELECT VALUE(p)
   FROM warehouses w,
   TABLE(XMLSEQUENCE(EXTRACT(warehouse_spec, '/Warehouse/*'))) p
   WHERE w.warehouse_name = 'San Francisco';

VALUE(P)
----------------------------------------------------------------
<Building>Rented</Building>
<Area>50000</Area>
<Docks>1</Docks>
<DockType>Side load</DockType>
<WaterAccess>Y</WaterAccess>
<RailAccess>N</RailAccess>
<Parking>Lot</Parking>
<VClearance>12 ft</VClearance>

8 rows selected.


XMLTRANSFORM

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL

Go to previous page
Previous

XMLTRANSFORM

문법

XMLTransform::=
Description of XMLTransform.gif follows

그림 설명

목적

XMLTransform함수는 인수로써 XMLType인스턴스와 그 자체가 XMLType 인스턴스인 XSL스타일 쉬트를 취한다. 이 함수는 스타일 쉬트를 인스턴스로 적용하고, XMLType를 반환한다.

이 함수는 데이터를 데이터 베이스로부터 검색하는 것 처럼 스타일 쉬트에 따라서 데이터를 조직하는데 유효하다.

XMLTransform은 XMLType 인스턴스와 XML형태 시트를 인수로서 가져오며 이는 그 자체가 XMLType 인스턴스의 형식이다. 이는 해당 형태 시트를 그 인스턴스에 적용하고 XMLType 인스턴스를 반환합니다.

예제

XMLTransform함수는 XSL스타일 쉬트의 존재성이 필요하다. 이것은 노드안의 요소를 알파벳 순으로 표기하는 단순한 스타일 쉬트의 단순한 예제이다.

CREATE TABLE xsl_tab (col1 XMLTYPE);

INSERT INTO xsl_tab VALUES (
   XMLTYPE.createxml(
   '<?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
      <xsl:output encoding="utf-8"/>
      <!-- alphabetizes an xml tree -->
      <xsl:template match="*">
        <xsl:copy>
          <xsl:apply-templates select="*|text()">
            <xsl:sort select="name(.)" data-type="text" order="ascending"/>
          </xsl:apply-templates>
        </xsl:copy>
      </xsl:template>
      <xsl:template match="text()">
        <xsl:value-of select="normalize-space(.)"/>
      </xsl:template>
    </xsl:stylesheet>  '));

1 row created.

다음 예제는 샘플 테이블 oe.warehouse의 warehouse_spec의 요소를 알파벳 순으로 표기하기 위한 xsl_tab XSL 스타일 쉬트를 이용한다.
SELECT XMLTRANSFORM(w.warehouse_spec, x.col1).GetClobVal()
FROM warehouses w, xsl_tab x
WHERE w.warehouse_name = 'San Francisco';

XMLTRANSFORM(W.WAREHOUSE_SPEC,X.COL1).GETCLOBVAL()
--------------------------------------------------------------------------------
<Warehouse>
  <Area>50000</Area>
  <Building>Rented</Building>
  <DockType>Side load</DockType>
  <Docks>1</Docks>
  <Parking>Lot</Parking>
  <RailAccess>N</RailAccess>
  <VClearance>12 ft</VClearance>
  <WaterAccess>Y</WaterAccess>
</Warehouse>


DECODE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

DECODE

문법

decode::=
Description of decode.gif follows

그림 설명

목적

DECODE는 일반적인 프로그래밍 언어의 IF문을 SQL 문자 또는 PL/SQL안으로 끌여들여 사용하기 위하여 만들어진 오라클함수이다. 따라서 일반 프로그래밍 언어의 IF문이 수행할 수 있는 기능을 포함하고 있다. select시의 decode 사용은 from 절만 빼고 어디에서나 사용할수 있다.단. 비교 연산은 '='만 가능하다.

Decode함수는 1개씩 각각의 search 값을 expr과 비교한다. 만약 expr이 search와 같으면, 오라클 데이터 베이스는 상응하는 result를 반환한다. 만약 일치하는것을 발견하지 못하면, default값을 반환한다. 만약 default가 생략되면, 오라클은 null을 반환한다.

인수는 임의의 수치형(NUMBER,BINARY_FLOAT,BINARY_DOUBLE) 또는 문자형이다.

  • 만약 expr과 search가 문자 데이터라면, 오라클은 비 공백 비교 어의(semantics)을 비교한다. expr,search,result의 데이터형은 CHAR,VARCHAR2,NCHAR,NVARCHAR2이다. 반환되는 문자열은 VARCHAR2데이터형이고, 최초의 result 파라미터와 같은 문자 세트의 문자열이다.

  • 만약 처음 search-result 쌍이 수치라면, 오라클은 모든 search-result 표현과 처음 expr을 비교하고, 수치 우선 순위가 가장 높은 인수를 판단하여 나머지 인수를 그 데이터형에 암묵적으로 변환하고, 그 데이터형을 반환한다.

search,result,default 값은 식으로부터 도출될수 있다. 오라클은 expr과 비교하기 전에 모든 search값을 평가하는 것이아니라, search과 expr을 비교하기 전에 각 search값을 평가한다. 그 결과 오라클은 만약 이전에 search이 expr과 같다면, 오라클은 search을 평가하지 않는다.

오라클은 비교하기 전에 expr과 각 search값을 처음 search의 데이터형으로 변환한다. 오라클은 자동적으로 처음 result와 같은 데이터형으로 반환값을 변환한다.만약 처음 result가 CHAR데이터 형이거나 NULL이라면, 오라클은 VARCHAR2형으로 반환값을 변환한다.

DECODE함수에서, 오라클은 2개의 null을 동등하게 고려한다. 만약 expr이 null이라면, 오라클은 처음 search의 결과를 null로써 반환한다.

DECODE함수에서 컴포넌트의 최대수는 expr,searches,results,default를 포함해 255이다.

예제

이 예제는 warehouse_id값을 Decode한다. 만약 warehouse_id가 1이라면 함수는 'Southlake',만약 2라면 'San Francisco' 등으로 반환한다. 만약 warehouse_id가 1,2,3,4아니라면 'Non domestic'를 반환한다.

SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake',
                             2, 'San Francisco',
                             3, 'New Jersey',
                             4, 'Seattle',
                                'Non domestic')
       "Location of inventory" FROM inventories
       WHERE product_id < 1775;


DUMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

DUMP

문법

dump::=
Description of dump.gif follows

그림 설명

목적

DUMP함수는 지정한 데이터의 위치와 길이 등을 지정한 형식으로 반환한다.

DUMP함수는 데이터형 코드,bytes에서 길이,expr의 내부 표현을 포함한 VARCHAR2값을 반환한다. 반환된 결과는 항상 데이터 베이스 문자 세트에 있다. 각 코드에 사응하는 데이터형에 대해서는 Table 2-1, "Built-In Datatype Summary" 참조.

인수 return_fmt는 반환값의 서식을 지정하고, 다음 값을 지정할수있다.

  • 8은 8진법으로 결과를 반환한다.

  • 10은 10진법으로 결과를 반환한다.

  • 16은 16진법으로 결과를 반환한다.

  • 17은 17진법으로 결과를 반환한다.

기본적으로, 반환값은 문자 세트 정보를 포함하지 않는다. expr의 문자 세트명을 추출하기 위해서, 이전 서식값의 임의값에 1000을 더한다. 예를 들어, return_fmt에 1008을 지정하면, 8진표기로 결과가 반환하고, expr의 문자 세트 명을 제공한다.

인수 start_position과 length는 반환되기 위한 내부 표현의 부분을 지정하기 위해 배합한다. 기본적으로, 10진표기로 전체 내부 표현이 반환된다.

만약 expr이 NULL이라면, 함수는 NULL을 반환한다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나 CLOB는 암묵적인 데이터 변환을 통해 인수로써 전달될수 있다.

예제

다음 예제는 문자열 식 또는 열로부터 정확하게 dump 정보를 추출하는 방법을 보인다.

SELECT DUMP('abc', 1016)
   FROM DUAL;

DUMP('ABC',1016)
------------------------------------------
Typ=96 Len=3 CharacterSet=WE8DEC: 61,62,63

SELECT DUMP(last_name, 8, 3, 2) "OCTAL"
   FROM employees
   WHERE last_name = 'Hunold';

OCTAL
-------------------------------------------------------------------
Typ=1 Len=6: 156,157

SELECT DUMP(last_name, 10, 3, 2) "ASCII"
   FROM employees
   WHERE last_name = 'Hunold';

ASCII
--------------------------------------------------------------------
Typ=1 Len=6: 110,111


ORA_HASH

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ORA_HASH

문법

ora_hash::=
Description of ora_hash.gif follows

그림 설명

목적

ORA_HASH함수는 주어진 표현에 대한 해쉬 값을 계산하는 함수이다. 이 함수는 데이터의 부분 집합 분석 이나, 랜덤 샘플 생성과 같은 조작에 유용하다.

  • 인수 expr은 오라클 데이터 베이스로 해쉬 값을 계산하기 원하는 데이터를 정의한다. 일반적 열의 이름을 가지는 expr로 지정하기 위한 데이터의 형태나 길이의 제한은 없다.

  • 옵션의 max_bucket 인수는 해쉬 함수에 의해 반환되는 최대의 bucket값을 정의한다. 0과 4294967295 사이의 값을 지정할수 있다. 기본값은 4294967295이다.

  • 옵션 seed_value인수는 데이터의 같은 세트에 대하여 여러 다른 결과를 산출하도록 한다. 오라클은 해쉬함수를 expr과 seed_value의 조합에 적용한다. 0과 4294967295 사이의 값을 지정할수 있다. 기본값은 4294967295이다.

함수는 NUMBER값을 반환한다.

예제

다음 예제는 sh.sales 테이블에서 고객 ID와 제품 ID의 각 조합에 대한 해쉬값을 생성하여, 해쉬값을 최대 100개 bucket에 분할하고, 첫번째 bucket(bucket 0)에 amount_sold값의 합계를 반환한다. 세번째 인수 (5)는 해쉬 함수에 대한 seed값을 지정한다. 이 seed값을 변화함에 따라 같은 쿼리에 대하여 다른 해쉬 결과를 획득할수 있다.

SELECT SUM(amount_sold) FROM sales
   WHERE ORA_HASH(CONCAT(cust_id, prod_id), 99, 5) = 0;

SUM(AMOUNT_SOLD)
----------------
            7315

다음 예제는 10개의 buckets(0에서 9) 지정에 의해 sh.sales 테이블에서 데이터의 subset을 검색하여서, bucket 1로 부터 데이터를 반환한다. 기대되는 subset은 행의 약 10% 이다. (sales 테이블은 960 행)

SELECT * FROM sales
   WHERE ORA_HASH(cust_id, 9) = 1;

   PROD_ID    CUST_ID TIME_ID   C   PROMO_ID QUANTITY_SOLD AMOUNT_SOLD
---------- ---------- --------- - ---------- ------------- -----------
      2510       6950 01-FEB-98 S       9999             2          78
      9845       9700 04-FEB-98 C       9999            17         561
      3445      33530 07-FEB-98 T       9999             2         170
. . .
       740      22200 13-NOV-00 S       9999             4         156
      9425       4750 29-NOV-00 I       9999            11         979
      1675      46750 29-NOV-00 S       9999            19        1121
97 rows selected.


VSIZE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

VSIZE

문법

vsize::=
Description of vsize.gif follows

그림 설명

목적

VSIZE함수는 expr의 내부 표현에서 바이트의 수를 반환한다. 만약 expr이 Null이라면, 이 함수는 Null을 반환한다.

이 함수는 직접적으로 CLOB 데이터를 지원하지 않는다. 그러나, CLOB는 암묵적 데이터 변환을 통하여 인수로써 전달할수 있다.

예제

다음 예제는 부서 아이디 10에서 종업원의 last_name열의 바이트수를 반환한다.

SELECT last_name, VSIZE (last_name) "BYTES"
  FROM employees
  WHERE department_id = 10;

LAST_NAME            BYTES
--------------- ----------
Whalen                   6


COALESCE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COALESCE

문법

coalesce::=
Description of coalesce.gif follows

그림 설명

목적

COALESCE 함수는 나열된 값을 순차적으로 체크하여 NULL이 아닌 첫번째 인수를 반환한다. 모든 인수가 NULL인경우에는 NULL을 반환한다.

만약 expr 전체가 수치 데이터형이거나 암묵적으로 수치 데이터 형으로 변환 가능한 수치 외의 데이터형이라면, 오라클 데이터 베이스는 가장 높은 수치 순위를 결정하여 나머지 인수를 암묵적으로 그 데이터형으로 변환하고, 그 데이터 형을 반환한다.

이 함수는 NVL함수의 일반화된것이다.

COALSESCE함수는 CASE식의 표현으로 사용 할수 있다.예를 들어,

COALESCE (expr1, expr2)
는 아래와 같다.
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
는 동일하게,
COALESCE (expr1, expr2, ..., exprn), for n>=3
이것은 아래와 동일하다.
CASE WHEN expr1 IS NOT NULL THEN expr1
   ELSE COALESCE (expr2, ..., exprn) END

참 조 :

NVL and "CASE Expressions "

예제

다음 예제는 oe.prodct_information 테이블을 이용하여, 상품의 재고 판매를 기획한다. 10% 할인 판매를 한다. 만약 표시 가격이 없다면, 세일 가격은 최소가격이 된다. 만약 최소가격이 없다면, 세일 가격은 5이다.

SELECT product_id, list_price, min_price,
   COALESCE(0.9*list_price, min_price, 5) "Sale"
   FROM product_information
   WHERE supplier_id = 102050;

PRODUCT_ID LIST_PRICE  MIN_PRICE       Sale
---------- ---------- ---------- ----------
      2382        850        731        765
      3355                                5
      1770                    73         73
      2378        305        247      274.5
      1769         48                  43.2


LNNVL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LNNVL

문법

lnnvl::=
Description of lnnvl.gif follows

그림 설명

목적

LNNVL함수는 조건의 한쪽 또는 양쪽 연산자가 NULL이 존재할 경우에, 조건문을 평가하기 위한 방법을 제공한다. 이 함수는 WHERE구문에서만 사용가능하다. 이 함수는 조건문을 인수로 가지고, 만약 조건문이 FALSE이거나 UNKNOWN 이라면 TRUE를 반환하고, 조건문이 TRUE라면 FALSE를 반환한다.LNNVL함수는 스칼라 표현이 사용될수 있는 곳이면 이용할수 있다. IS [NOT] NULL,AND,OR,OR조건문이 있는 문장에서는 유효하지 않으나, 발생가능한 NULL값들을 처리하기 위해 사용가능하다.

오라클 데이터 베이스는 LNNVL함수를 내부적으로 NOT IN 조건문을 NOT EXISTS 조건문으로 변경하는 방법을 사용한다. 이 경우에, EXPLAIN PLAN으로부터 출력에 의해서, PLAN 테이블 출력에서 이 운영나타난다. 조건문은 임의의 스칼라 값에을 평가할수 있지만, AND,OR,BETWEEN을 포함한 복합 조건문을 사용할수 없다.

이 테이블은 a=2이고 b는 NULL인 경우에 LNNVL함수가 반환하는 값을 보여준다.

조 건 | 참 / 거짓 | LNNVL 반환 값
a = 1 | FALSE | TRUE
a = 2 | TRUE | FALSE
a IS NULL | FALSE | TRUE
b = 1 | UNKNOWN | TRUE
b IS NULL | TRUE | FALSE
a = b | UNKNOWN | TRUE

예제

수수료를 받지 않는 종업원을 포함하여, 20% 미만의 수수료를 받는 종업원을 알기를 원한다고 가정하자. 다음 쿼리는 단지 20%미만의 수수료를 받는 종업원을 반환한다.

SELECT COUNT(*) FROM employees WHERE commission_pct < .2;

  COUNT(*)
----------
        11

수수료를 받지 않는 72명을 포함하기 위해서, 다음과 같이 LNNVL함수를 이용하여 쿼리를 변경할수 있다.(수수료 NULL+수수료 20%미만)

SELECT COUNT(*) FROM employees WHERE LNNVL(commission_pct >= .2);

  COUNT(*)
----------
        83


NULLIF

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NULLIF

문법

nullif::=
Description of nullif.gif follows

그림 설명

목적

NULLIF는 expr1과 expr2를 비교한다.만약 expr1과 expr2가 같으면, NULL값을 반환한다. 만약 expr1과 expr2가 같지 않으면, expr1을 반환한다. expr1에 대하여는 NULL을 지정할수 없다.

만약 양쪽 인수가 수치형이라면, 오라클 데이터 베이스는 더 높은 수치 순위를 가지는 인수를 판단하여, 나머지 인수를 그 데이터형으로 암묵적으로 변환하여 반환한다. 만약 인수가 수치가 아니라면, 두 인수는 같은 데이터형이여야 하며, 그렇지 않은 경우 에러가 발생한다.

NULLIF함수는 다음의 CASE문장과 논리적으로 동등하다.

CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END

참 조:

"CASE Expressions "

예제

다음 예제는 샘플 스키마 HR에서 고용된 이후 직종이 변경된 사람을 선택하는데, 현재 job_id와 job_history의 job_id를 비교하여 확인한다.

SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID"
   FROM employees e, job_history j
   WHERE e.employee_id = j.employee_id
   ORDER BY last_name;

LAST_NAME                 Old Job ID
------------------------- ----------
De Haan                   AD_VP
Hartstein                 MK_MAN
Kaufling                  ST_MAN
Kochhar                   AD_VP
Kochhar                   AD_VP
Raphaely                  PU_MAN
Taylor                    SA_REP
Taylor
Whalen                    AD_ASST
Whalen


NVL

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NVL

문 법

nvl::=
Description of nvl.gif follows

그림 설명

목적

NVL함수는 쿼리의 결과에서 NULL(공백으로 반환)값을 치환한다. 만약 expr1이 NULL이면, NVL함수는 expr2를 반환한다. 만약 expr1이 NULL이 아니면, NVL함수는 expr1을 반환한다.

인수 expr1과 expr2는 임의의 데이터 형을 가진다. 만약 데이터 형이 다르면,

  • 만약 expr1이 문자 데이터 이면, 오라클 데이터 베이스는 비교하기 전에 expr2의 데이터형은 expr1의 데이터형으로 변환하여, expr1의 문자 세트에 VARCHAR2를 반환한다.

  • 만약 expr1이 숫자형이면, 오라클 데이터 베이스는 더 높은 수치 순위를 가지는 인수를 판단하여, 다른 인수의 데이터형을 암묵적으로 변환하여 반환한다.

예제

다음 예제는 종업원이 수수료를 받지 않은 경우 "Not Applicable"를 표시한다.

SELECT last_name, NVL(TO_CHAR(commission_pct), 'Not Applicable')
   "COMMISSION" FROM employees
   WHERE last_name LIKE 'B%'
   ORDER BY last_name;

LAST_NAME                 COMMISSION
------------------------- ----------------------------------------
Baer                      Not Applicable
Baida                     Not Applicable
Banda                     .1
Bates                     .15
Bell                      Not Applicable
Bernstein                 .25
Bissot                    Not Applicable
Bloom                     .2
Bull                      Not Applicable


NVL2

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NVL2

문법

nvl2::=
Description of nvl2.gif follows

그림 설명

목적

NVL2함수를 사용하면, 지정한 표현이 NULL인지 여부에 근거하여 쿼리의 반환될 값을 판단할수 있다. 만약 expr1이 NULL이 아니라면, NVL2는 expr2를 반환한다. 만약 expr1인 NULL이라면, NVL2는 expr3을 반환한다.

인수 expr1은 임의의 데이터형을 가질수 있다. 인수 expr2와 expr3은 LONG이외의 임의의 데이터 형을 가질수 있다.

만약 expr2와 expr3의 데이터형이 다르다면,

  • 만약 expr2가 문자 데이터형이라면, 오라클 데이터 베이스는 expr3이 NULL 상수가 아닌 한, 그것들을 비교하기 전에 expr3을 expr2의 데이터형으로 변환한다. expr3이 NULL상수인 경우에는, 데이터형 변환은 필요하지 않는다.  오라클은 expr2의 문자 세트에서 VARCHAR2를 반환한다.

  • 만약 expr2가 수치인 경우에는, 오라클은 더 높은 수치 순위를 판단하여, 다른 인수의 데이터형을 암묵적으로 변환하여, 그 데이터형으로 반환한다.

예제

다음 예제는 employee테이블의 commission_pct 열이  NULL인지 여부에 의해서, 종업원의 수입이 급여와 수수료가 더해졌는지, 단지 급여로 구성되어 있는지 나타낸다.

SELECT last_name, salary, NVL2(commission_pct,
   salary + (salary * commission_pct), salary) income
   FROM employees WHERE last_name like 'B%'
   ORDER BY last_name;

LAST_NAME                     SALARY     INCOME
------------------------- ---------- ----------
Baer                           10000      10000
Baida                           2900       2900
Banda                           6200       6882
Bates                           7300       8468
Bell                            4000       4000
Bernstein                       9500      11970
Bissot                          3300       3300
Bloom                          10000      12100
Bull                            4100       4100


SYS_CONTEXT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_CONTEXT

문법

sys_context::=
Description of sys_context.gif follows

그림 설명

목적

SYS_CONTEXT함수는 문맥 namespace와 관련된 parameter의 값을 반환한다.이 함수는 SQL 과 PL/SQL문장에 사용될수 있다.

namespace와 parameter에는, 문자열 또는 namespace또는 속성을 지정하는 문자열로 결정되는 식을 지정할수 있다. 문맥 namespace는 이미 생성될 필요가 있고, 연관된 parameter와 그 값은 DBMS_SESSION.set_context 프로시져를 이용하여 설정될 필요가 있다. namespace는 유요한 SQL식별자를 필요로 한다. parameter 명은 문자열을 지정할수 있다. 대소문자를 구별하지 않고, length는 30바이트를 초과하지 않는다.

반환값은 VARCHAR2데이터형이다. 반환값의 기본적 최대 사이즈는 256바이트이다. 옵션 length파라미터를 지정하여 이 기본적 값을 초과할수있는데, 이 값은 NUMBER또는 암묵적으로 NUMBER로 변환가능한 값이다. 이 값의 유효한 범위는 1~4000바이트이다. 만약 유효하지 않는 값을 지정하면, 오라클 데이터 베이스는 그 값을 무시하고, 기본적 값을 사용한다.

예제

다음 예제는 데이터베이스에서 로그인한 사용자 명을 반환한다.

CONNECT OE/OE
SELECT SYS_CONTEXT ('USERENV', 'SESSION_USER')
   FROM DUAL;

SYS_CONTEXT ('USERENV', 'SESSION_USER')
------------------------------------------------------
OE

다음 가상 예제는 hr_apps를 생성시에 문맥 hr_apps와 관련된 PL/SQL패키지에서 속성 group_no에 대한 값을 설정한 그룹 번호를 반환한다.

SELECT SYS_CONTEXT ('hr_apps', 'group_no') "User Group"
   FROM DUAL;

Table 7-11 Namespace USERENV의 파라미터의 사전정의

Parameter | Return Value | Return Length (bytes)
ACTION | 모듈(어플리케이션명)에서 위치를 식별하고, DBMS_APPLICATION_INFO패키지 또는 OCI를 통해 설정한다. | 32
AUDITED_CURSORID

감사를 트리거한 SQL의 커서 ID를 반환한다. 이 파라미터는 fine-grained 감사 환경에서 유효하지 않는다. 만약 이 파라미터를 fine-grained 감사 환경에서 지정하지 않으면, 오라클 데이터베이스는 항상 NULL을 반환한다.

·Fine-grained: 클라이언트 애플리케이션과 커넥터의 대화가 같은 주소 공간에서 실행되는 것을 서술한다.

NA
AUTHENTICATION_DATA | 로그인 사용자 인증에 이용되는 데이터를 반환. X.503 인증된 세션을 인증하면서, 이 필드는 HEX2 포맷으로 인증의 문맥을 반환한다. | 256
AUTHENTICATION_TYPE 사용자가 어떻게 인증되는지를 반환한다.

  • DATABASE: 사용자 명/패스워드 인증

  • OS: 운영 시스템 외부 사용자 인증

  • NETWORK: 네트워크 프로토콜 또는 ANO 인증

  • PROXY: OCI 프로시 연결 인증

 30
BG_JOB_ID | 만약 오라클 데이터베이스 백그라운드 프로세스에의해 현재 세션에 의해 확립되었다면, 현재세션의 JOB ID를 반환한다. 만약 백그라운드 프로세스에 의해 확립되지 않으면, NULL을 반환한다. | 64
CLIENT_IDENTIFIER | DBMS_SESSION.SET_IDENTIFIER 프로시져, OCI 속성 OCI_ATTR_CLIENT_IDENTIFIER 또는 JAVA CLASS Oracle.jdbc.OracleConnection.setClientIdentifier를 통하여 어플리케이션에 의해서 설정된 식별자를 반환한다. 이 속성은 같은 데이터베이스 사용자로써 인증된 경량 어플리케이션 사용자를 식별하기 위해 여러 데이터베이스 컴포넌트에 의해 사용된다. | 64
CLIENT_INFO | DBMS_APPLICATION_INFO 패키지를 이용하는 어플리케이션을 저정할수 있는 사용자 세션의 정보를 64byte까지 반환한다. | 64
CURRENT_SCHEMA | 현재 스키마에서 이용되는 기본 스키마명을 반환한다. 이 값은 ALTER SESSION SET CURRENT_SCHEMA 문장을 이용하여 변경할수 있다. | 30
CURRENT_SCHEMAID

현재 세션에서 이용되는 기본적 schema ID.

30
CURRENT_SQL

CURRENT_SQL n

 CURRENT_SQL은 fine-grained 감사 이벤트를 트리거에 의해서 실행한 현재 SQL의 최초 4KB를 반환한다. CURRENT_SQLn 속성은 차후의 4K-byte 증가분을 반환한다. 이때 n은 1~7까지의 정수이다. CURRENT_SQL1은 4K~8K를 반환,CURRENT_SQL2는 8~12KB등과 같이 반환한다. fine-grained 감사 기능에 대한 이벤트 핸들러 내에서 이 속성을 지정할수 있다.

·Fine-grained: 클라이언트 애플리케이션과 커넥터의 대화가 같은 주소 공간에서 실행되는 것을 서술한다.

4
CURRENT_USER

이 속성은 반대한다. 대신에 SESSION_USER속성을 이용.

30
CURRENT_USERID | 이 속성은 반대한다. 대신에 SESSION_USERID 속성을 이용. | 30
DB_DOMAIN | DB_DOMAIN초기화 파라미터에서 지정된 데이터베이스의 도메인. | 256
DB_NAME | DB_NAME 초기화 파라미터에서 지정된 데이터베이스 명. | 30
DB_UNIQUE_NAME | DB_UNIQUE_NAME 초기화 파라미터에서 지정된 데이터베이스명. | 30
ENTRYID | 현재 감사 엔트리 번호를 반환한다. 감사 엔트리ID 순서는 fine-grained 감사 기록과 정기적인 감사 기록을 공유된다. 분산 SQL 문장에서 이 속성을 이용할수 없다. | 30
EXTERNAL_NAME | 데이터 베이스 사용자의 외부 명을 반환한다. SSL은 v.503 인증을 이용하여 세션을 인증함으로, 이 파라미터는 사용자 인증에 저장된 구분된 이름(DN)을 반환한다. | 256
FG_JOB_ID | 만약 클라이언트 foreground 프로세스에 의해 확립되면 현재 세션의 JOB ID를 반환한다. 만약 세션이 foreground process에 의해 확립되지 않으면 NULL을 반환한다. | 30
GLOBAL_CONTEXT_MEMORY

문맥에 글로벌 액세스에 의해 시스템 글로벌 영역에서 이용된 수치를 반환.

NA
HOST | 클라이언트가 접속된 호스트 머신 명. | 54
INSTANCE | 현재 인스턴스의 인스턴스 식별 번호. | 30
IP_ADDRESS | 클라이언트가 접속된 머신의 IP 주소. | 30
ISDBA | 운영 시스템 또는 패스워드 파일을 통해서 사용자가 DBA권한을 가지고 있으면 인증되었을경우 TRUE를 반환. | 30
LANG | 기존의 'LANGUAGE'파라미터보다 짧은 언어명에 대한 ISO약칭. | 62
LANGUAGE 세션에 의해 이용되는 언어와 지역을 데이타베이스 문자 세트를 포함한 다음 서식을 반환.

language_territory.characterset

 52
MODULE | DBMS_APPLICATION_INFO패키지 또는 OCI를 통한 에플리케이션명(모듈). | 48
NETWORK_PROTOCOL | 접속 문자열의 'PROTOCOL=protocol' 부분에서 지정된 통신에 이용되는 네트워크 프로토콜. | 256
NLS_CALENDAR | 현재 세션의 현재 달력 | 62
NLS_CURRENCY | 현재 세션의 통화 | 62
NLS_DATE_FORMAT | 세션에 대한 날짜 서식 | 62
NLS_DATE_LANGUAGE | 날짜를 표시하기 위해 이용되는 언어. | 62
NLS_SORT | BINARY 또는 언어 소트 기준. | 62
NLS_TERRITORY | 현재 세션의 지역. | 62
OS_USER

데이터베이스 세션을 초기화 하는 클라이언트 프로세스의 운영 시스텀 사용자 명.

30
PROXY_USER

SESSION_USER의 현재 세션을 오픈한 데이터 베이스 사용자명.

30
PROXY_USERID | SESSION_USER의 현재 세션을 오픈한 데이터 베이스 사용자 ID. | 30
SERVICE_NAME

주어진 세션이 접속하고있는 서비스의 명.

64
SESSION_USER

현재 사용자가 인증되고 있는 데이터베이스 사용자명. 이 값은 세션이 유지되는 동안에 같다.

30
SESSION_USERID

현재 사용자가 인증되고 있는 데이터 베이스 사용자 명의 ID.

30
SESSIONID

감사 세션 식별자. 분산된 SQL문에서 이 속성은 이용할수 없다.

30
STATEMENTID | 감수 문자 식별자.STATEMENTID는 주어진 세션에서 감사된 SQL문장의 번호를 나타낸다. | NA
TERMINAL | 현재 세션의 클라이언트에 대한 운영 시스템 식별자를 반환한다. 분산 SQL문장에서, 이 속성은 로컬 세션에 대한 식별자를 반환한다. 분산 환경에서, 단지 SELECT문장에서만 지원되고, INSERT,UPDATE,DELETE 환경에서는 사용할 수 없다. (이 파라미터의 반환 length는 운영 시스템에 따라 다르다.) | 10


SYS_GUID

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_GUID

문법

sys_guid::=
Description of sys_guid.gif follows

그림 설명

목적

SYS_GUID함수는 16바이트로 구성된 고유전역식별자(globally unique identifier,RAW 값)을 생성하여 반환한다. 대부분의 플랫폼에서는, 생성된 식별자는 호스트 식별자, 프로세스 또는 프로세스의 thread 식별자 또는 함수를 호출하는 thread, 프로세스 또는 thread에 대한 비반복치값(바이스의 순서)로 구성된다.

예제

다음 예제는 hr.locations 테이블에서 열을 추가하고, 각행에 고유 인식자를 삽입하고, 고유전역식별자의 16바이트 행값을 32-문자 16진수 표기를 반환한다.

ALTER TABLE locations ADD (uid_col RAW(32));

UPDATE locations SET uid_col = SYS_GUID();

SELECT location_id, uid_col FROM locations;

LOCATION_ID UID_COL
----------- ----------------------------------------
       1000 7CD5B7769DF75CEFE034080020825436
       1100 7CD5B7769DF85CEFE034080020825436
       1200 7CD5B7769DF95CEFE034080020825436
       1300 7CD5B7769DFA5CEFE034080020825436
. . .


SYS_TYPEID

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SYS_TYPEID

문법

sys_typeid::=
Description of sys_typeid.gif follows

그림 설명

목적

SYS_TYPEID함수는 피연산자(operand)의 대부분 지정한 형태의 typeid를 반환한다.이 값은 주로 치환가능한 열의 기초가 되는 형태 판별 열을 식별하는데 이용한다. 예를 들면, 형태-판별 열에서 색인을 만들기 위해서 SYS_TYPEID에 의해 반환되는 값을 이용할수 있다.

Object 형태 피연자에서 이함수를 이용할수 있다. 모든 최종 root object형태(형태 계층에 속하지 않는 최종 형태)는 Null typeid를 가진다. 오라클 데이터 베이스는 type 계층에 속하는 모든 형태에 unique non-null typeid를 할당한다..

예제

CREATE TYPE Person_typ AS OBJECT ( ssn NUMBER, name VARCHAR2(30), address VARCHAR2(100)) NOT FINAL;

CREATE TABLE persons OF Person_typ;
INSERT INTO persons
VALUES (Person_typ(1243, ’Bob’, ’121 Front St’));
INSERT INTO persons
VALUES (Student_typ(3456, ’Joe’, ’34 View’, 12, ’HISTORY’));
INSERT INTO persons
VALUES (PartTimeStudent_typ(5678, ’Tim’, 13, ’PHYSICS’, 20));

다음 예제는 "Substitutable Table and Column Examples".에서 만들어진 persons와 books 테이블을 이용한다. 양쪽 테이블 모두 "Type Hierarchy Example".에서 생성된 person_t 타입을 사용한다. 첫번째 쿼리는 persons 테이블에서 저장된 object instances의 가장 많이 지정한 타입을 반환한다.

SELECT name, SYS_TYPEID(VALUE(p)) "Type_id" FROM persons p;

NAME                      Type_id
------------------------- --------------------------------
Bob                       01
Joe                       02
Tim                       03

다음 쿼리는 books테이블에 저장된 저자의 가장 많이 지정된 타입을 반환한다.

CREATE TYPE person_t AS OBJECT (name VARCHAR2(100), ssn
NUMBER)
NOT FINAL;

CREATE TABLE books (title VARCHAR2(100), author person_t);
CREATE TYPE employee_t UNDER person_t (department_id NUMBER, salary NUMBER) NOT
FINAL;
CREATE TYPE part_time_emp_t UNDER employee_t (num_hrs NUMBER);

INSERT INTO books VALUES ('An Autobiography', person_t('Bob', 1234));
INSERT INTO books VALUES ('Business Rules', employee_t('Joe', 3456, 12, 10000));
INSERT INTO books VALUES ('Mixing School and Work', part_time_emp_t('Tim', 5678,
13, 1000, 20));

SELECT b.title, b.author.name, SYS_TYPEID(author)
       "Type_ID" FROM books b;

TITLE                     AUTHOR.NAME          Type_ID
------------------------- -------------------- -------------------
An Autobiography          Bob                  01
Business Rules            Joe                  02
Mixing School and Work    Tim                  03

테이블의 type-discriminant 열에 인덱스를 생성하기 위해서 SYS_TYPEID 함수를 이용한다.


UID

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

UID

문법

uid::=
Description of uid.gif follows

그림 설명

목적

UID함수는 세션 사용자의 유일한 식별하는 정수를 반환한다.(로그인 유저)

예 제

다음 예제는 현재 사용자의 UID를 반환한다.

SELECT UID FROM DUAL;


USER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

USER

문법

user::=
Description of user.gif follows

그림 설명

목적

USER 함수는 VARCHAR2 형태를 가지는 세션 사용자(로그인 유저)의 이름을 반환한다. 오라클 데이터 베이스는 공백을 붙여서 비교 semantic으로 이 함수의 값을 비교한다.

분산 SQL문장에서는, UID와 사용자 함수는 로컬 데이터베이스에서 사용자를 식별한다. CHECK 제약 조건에서는 이 함수를 사용할수 없다.

예제

현재 이용자와 이용자 UID를 반환한다.

SELECT USER, UID FROM DUAL;


USERENV

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

USERENV

문법

userenv::=
Description of userenv.gif follows

그림 설명

목적

주 의 :

USERENV함수는 후행 호환을 위해 유지되는 유산 함수이다. 오라클은 현행 기능에 대하여 이미 있는 USERENV 네임 스페이스와 함께 SYS_CONTEXT함수를 이용하는 것을 추천한다. SYS_CONTEXT 참조.

USERENV함수는 현재 세션에 대한 정보를 반환한다. 이 정보는 주의사항 감사 행적 테이블을 쓰거나, 세션에 의해 현재 이용되는 언어 특성 문자를 정의하는데 유용하다. CHECK 제약 조건에서 USERENV함수는 사용할수 없다. Table 7-12 는 parameter 인수값을 서술한다.

USERENV에 모든 콜은 NUMBER를 반환하는 SESSIONID,ENTRYID,COMMITSCN파라미터를 가지는 call을 제외하고 VARCHAR2데이터를 반환한다.

USERENV 함수는 현재 세션의 환경 정보를 반환합니다.
- ENTRYID : 사용 가능한 Auditing entry Identifier를 반환합니다.
- LABEL : 현재 세션의 Label을 반환합니다.
- LANGUAGE : 현재 세션에서 사용중인 언어와 테리토리 값을 반환합니다.
- SESSIONID : Auditing(감사) Session ID를 반환 합니다.
- TERMINAL : 현재 세션 터미널의 OS ID를 반환 합니다.

Table 7-12 Parameters of the USERENV Function

Parameter | Return Value
CLIENT_INFO | CLIENT_INFO는 DBMS_APPLICATION_INFO패키지를 이용하는 어플리케이션에 의해 저장될수 있는 사용자 세션 정보의 64바이트까지를 반환한다.
ENTRYID

현재 감사 엔티리 번호를 반환한다. 감사 엔트리 ID순서는 fine-grained 감사 레코드와 통상 감사 레코드 사이를 공유한다. 분산 SQL문에서 이 속성을 이용할수 없다.

참고: 코스 그레인드(coarse-grained)와 파인 그레인드(fine-grained)는 우리말 한마디로 옮기기에는 무척 버거운 개념이다. grain은 원래 보리나 밀 같은 곡식을 낟알로 만드는 작업이나 표면을 우둘투둘하게 하는 일을 뜻 하는데, 그때아주 곱고 섬세하게 하느냐, 아니면 듬성 듬성 크게 하느냐에 따라 fine와 coarse라 는형용사를 붙인다. 이것이 소프트웨어공학에 도입되어 어떠한 프로세스를 아주 잘게 쪼개느냐 아니면 굵게 쪼개서 뭉뚱그려 놓느냐를 표현할 때 쓰게 되었다. 웹서비스에서의서비스라는 단위에 비해 상대적으로 자바의 메소드는 더 세분화되어있다는 뜻에서 코스그레인드 서비스-파인그레인드 메소드라는 대칭이 생겼다고 봐도 좋다.

ISDBA

ISDBA는 만약 사용자가 운영 시스템 또는 패스워드 파일에 의해서 사용자가 DBA권한 소유가 인증되었을 경우에 'TRUE'를 반환한다.

LANG

LANG는 언어명에 대한 ISO 약칭을 반환한다. 'LANGUAGE' 파라미터의 축약

LANGUAGE LANGUAGE는 이 형태에서 데이터베이스 문자 세트 현행 세션에 의해 이용되는 언어와 지역을 반환한다.
language_territory.characterset
SESSIONID

SESSIONID는 감사 세션 식별자를 반환한다.분산 SQL문장에서 이 파라미터를 지정할수 없다.

TERMINAL | TERMINAL은 현재 세션의 터미널에 대한 운영 시스템 식별자를 반환한다. 분산 SQL문자에서, 이 파라미터는 로컬 세션의 식별자를 반환한다. 분산 환경에서, 이 파라미터는 리모트 SELECT문장에 대하여 지원될수 있으나, 리모트 INSERT,UPDATE,DELETE 에서는 이용될수 없다.

예제

다음 예제는 현재 세션의 LANGUAGE 파라미터를 반환한다.

SELECT USERENV('LANGUAGE') "Language" FROM DUAL;

Language
-----------------------------------
AMERICAN_AMERICA.WE8ISO8859P1


AVG

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

AVG

문법

avg::=
Description of avg.gif follows

그림 설명

목적

AVG함수는 지정된 컬럼에 대한 조건을 만족하는 행중에서 Null을 제외한 평균을 반환한다. 숫자 데이터 타입에만 사용한다.

이 함수는, 인수로 임의의 수치형 데이터, 또는 암묵적으로 수치 데이터 형으로 변환 가능한 수치 이외의 데이터형을 취한다. 이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환. 만약 DISTINCT 지정한 경우에는, analytic_clause의 query_partition_clause을 지정할수 있다. 그러나, order_by_clause과 windowing_clause은 허용하지 않는다.

집계 함수 예제

다음 예제는 hr.employees테이블에서 모든 종업원의 평균 급여를 계산 :

SELECT AVG(salary) "Average" FROM employees;

 Average
--------
    6425

분석 함수 예제

다음 예제는 employees 테이블의 각 종업원에 대해서, 같은 매니저에 대하여 직전과 직후에 고용된 종업원들의 평균 급여를 계산한다.

(이전+현재+이후 종업원)/3

SELECT manager_id, last_name, hire_date, salary,
   AVG(salary) OVER (PARTITION BY manager_id ORDER BY hire_date
   ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS c_mavg
   FROM employees;

MANAGER_ID LAST_NAME                 HIRE_DATE     SALARY     C_MAVG
---------- ------------------------- --------- ---------- ----------
       100 Kochhar                   21-SEP-89      17000      17000
       100 De Haan                   13-JAN-93      17000      15000
       100 Raphaely                  07-DEC-94      11000 11966.6667
       100 Kaufling                  01-MAY-95       7900 10633.3333
       100 Hartstein                 17-FEB-96      13000 9633.33333
       100 Weiss                     18-JUL-96       8000 11666.6667
       100 Russell                   01-OCT-96      14000 11833.3333
. . .


CORR

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CORR

문법

corr::=
Description of corr.gif follows

그림 설명

See Also:

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

CORR함수는 수치 쌍에 대한 상관 계수를 반환한다. 집계함수 또는 분석 함수로 이용할수 있다.

이 함수는 인수로써 임의의 수치형 또는 암묵적으로 수치형으로 변할수 있는 비수치형을 취한다. 오라클은 수치의 우선 순위가 가장 높은 인수를 판단하여, 나머지 인수를 암묵적으로 변환하여, 그 데이터형을 반환한다.

오라클 데이터 베이스는 expr1또는 expr2이 Null인 쌍을 제거한후에 (expr1,expr2)의 집합을 적용한다. 오라클은 다음과 같이 계산을 한다.

COVAR_POP(expr1, expr2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2))
함수는 NUMBER형태를 반환한다. 만약 함수가 empty 집합에 적용하면, Null을 반영한다.

Note:

CORR함수는 피어슨 상관 계수를 계산한다. 오라클은 비모수 또는 순위 상관을 지원하기 위하여 CORR_S(Spearman's rho 계수)와 CORR_K(Kendall's tau-b 계수)을 제공한다.

집계 예제

다음 예제는 oe.product_information테이블에서 weight_class의 제품의 표시 가격과 최소 가격의 상관계수를 계산한다.

SELECT weight_class, CORR(list_price, min_price)
   FROM product_information
   GROUP BY weight_class;

WEIGHT_CLASS CORR(LIST_PRICE,MIN_PRICE)
------------ --------------------------
           1                  .99914795
           2                 .999022941
           3                 .998484472
           4                 .999359909
           5                 .999536087

분석 예제

다음 예제는 sh.sales와 sh.times에서 1998년의 월 판매 수익과 월 판매 단위의 누적 상관 계수를 반환한다.

SELECT t.calendar_month_number,
   CORR (SUM(s.amount_sold), SUM(s.quantity_sold))
   OVER (ORDER BY t.calendar_month_number) as CUM_CORR
   FROM sales s, times t
      WHERE s.time_id = t.time_id AND calendar_year = 1998
      GROUP BY t.calendar_month_number
      ORDER BY t.calendar_month_number;

CALENDAR_MONTH_NUMBER   CUM_CORR
--------------------- ----------
                    1
                    2          1
                    3 .994309382
                    4 .852040875
                    5 .846652204
                    6 .871250628
                    7 .910029803
                    8 .917556399
                    9 .920154356
                   10  .86720251
                   11 .844864765
                   12 .903542662

상관 함수는 하나이상의 행이 필요하다. 이전 예제에서 첫번째 행이 없는 이유.


CORR_*

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CORR_*

The CORR_* functions are:

  • CORR_S

  • CORR_K

문법

correlation::=
Description of correlation.gif follows

그림 설명

목적

CORR 함수는 (CORR 참조)는 Pearson's 상관계수를 계산하고, 입력으로써 수식을 필요로 한다. CORR_*함수는 비모수 또는 순위 상관을 지원한다. 이러한 함수를 사용하면, 순서 척도화된 식 사이의 상관계수를 구한다.(값의 순서부터 가능한 곳) 상관 계수는 -1~1 사이의 값을 취한다.1은 완전환 정상관을, -1은 완전한 역의 상관, 0에 가까운 값은 상관이 없음을 나타낸다.

이 함수는 인수로써 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터를 취한다. 오라클 데이터 베이스는 수치 우선 순위가 가장 높은 인수를 판단하여, 나머지 인수를 그 데이터형으로 암묵적으로 변환하고, 계산을 실행하여 NUMBER를 반환한다.

expr1과 expr2는 분석 대상의 2개의 변수이다. 3번째 인수는 VARCHAR2형태의 반환되는 값이다. 만약 3번쨰 인수를 생략하면, 기본값은 COEFFICIENT이다. 반환되는 값의 의미는 다음 표를 참조.

Table 7-2 CORR_* Return Values

Return Value | Meaning
COEFFICIENT | 상관계수
ONE_SIDED_SIG | 상관의 한쪽 유의성
TWO_SIDED_SIG | 상관의 양쪽 유의성

CORR_S

CORR_S함수는 Spearman's 순위 상관계수를 구한다. 입력식은 관측치의 (xi, yi) 쌍 집합이다.

CORR_S 예제

다음 예제는 스피어만의 순위 상관계수를 계산한다.

SELECT CORR_S(salary, commission_pct, 'COEFFICIENT') coefficient,
       CORR_S(salary, commission_pct, 'TWO_SIDED_SIG') two_sided_p_value
  FROM hr.employees;

COEFFICIENT TWO_SIDED_P_VALUE
----------- -----------------
 .735837022        4.7362E-07

CORR_K

CORR_K은 Kendall's tau-b 순위 상관 계수를 구한다.

CORR_K 예제

다음 예제는 Kendall's tau-b 순위 상관 계수를 구한다.

SELECT CORR_K(salary, commission_pct, 'COEFFICIENT') coefficient,
       CORR_K(salary, commission_pct, 'TWO_SIDED_SIG') two_sided_p_value
  FROM hr.employees;

COEFFICIENT TWO_SIDED_P_VALUE
----------- -----------------
 .603079768        3.4702E-07


COUNT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COUNT

문법

count::=
Description of count.gif follows

그림 설명

See Also:

"분석 함수 " for information on syntax, semantics, and restrictions

목적

COUNT함수는 쿼리에 의해 반환된 행의 수를 반환한다.집계 함수 또는 분석함수로 이용할수 있다.

만약 DISTINCT를 지정했다면, analytic_clause 의 query_partition_clause 도 지정할수 있다. order_by_clause 과 indowing_clause 은 허용하지 않는다.

만약 expr을 지정하면, COUNT는 expr이 NULL이 아닌 행의 수를 반환한다. expr의 모든 행을 카운트 하거나 expr의 distinct값만 카운트 할수 있다. 만약 '*'을 지정했다면, 이 함수는 중복과 NULL을 포함한 모든 행을 반환한다. COUNT함수 결과는 NULL을 반환하지 않는다.

See Also:

"About SQL Expressions " for information on valid forms of expr and "Aggregate Functions "

집계 예제

다음 예제는 COUNT함수를 집계함수로 이용.

SELECT COUNT(*) "Total" FROM employees;

     Total
----------
       107

SELECT COUNT(*) "Allstars" FROM employees
   WHERE commission_pct > 0;

 Allstars
---------
       35

SELECT COUNT(commission_pct) "Count" FROM employees;

     Count
----------
        35

SELECT COUNT(DISTINCT manager_id) "Managers" FROM employees;

  Managers
----------
        18

분석 예제

다음 예제는 employee테이블에서 각 종업원에 대하여, 그 종업원의 급여보다 50보다 적은 금액으로부터 150보다 많은 급여를 벌고 있는 종업원의 수를 계산한다.

SELECT last_name, salary,
   COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING
      AND 150 FOLLOWING) AS mov_count FROM employees;

LAST_NAME                     SALARY  MOV_COUNT
------------------------- ---------- ----------
Olson                           2100          3
Markle                          2200          2
Philtanker                      2200          2
Landry                          2400          8
Gee                             2400          8
Colmenares                      2500         10
Patel                           2500         10
. . .


COVAR_POP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COVAR_POP

문법

covar_pop::=
Description of covar_pop.gif follows

그림 설명

See Also:

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

COVAR_POP함수는 number조합의 세트의 모집단 공분산을 반환한다. 집계함수 또는 분석함수로 이용할수 있다.

이 함수는 임의의 수치형 데이터 형 또는 암묵적으로 수치형으로 변환할수 있는 비수치형 데이터를 취한다. 오라클은 수치 순위가 가장 높은 인수를 판단하여, 나머지 인수를 그 인수의 데이터형으로 암묵적으로 변환한다.

오라클 데이터 베이스는 expr1 또는 expr2가 Null인 모든 쌍을 제외한후에 (expr1,expr2) 쌍의 세트에 적용한다. 오라클은 다음과 같이 계산한다.

(SUM(expr1 * expr2) - SUM(expr2) * SUM(expr1) / n) / n

where n 은 (expr1,expr2)쌍의 수. expr1 과 expr2가 모두 Null이 아닌 쌍.

함수는 Number 타입의 값을 반환한다. 만약 함수가 empty 세트를 적용하면, Null을 반환한다.

집계 예제

다음 예제는 sh.sales테이블에서 각 해에 대한 amount_sold과 quantity_sold의 모집단,표본 공분산을 계산한다.

SELECT t.calendar_month_number,
       COVAR_POP(s.amount_sold, s.quantity_sold) AS covar_pop,
       COVAR_SAMP(s.amount_sold, s.quantity_sold) AS covar_samp
FROM sales s, times t
WHERE s.time_id = t.time_id
AND t.calendar_year = 1998
GROUP BY t.calendar_month_number;

CALENDAR_MONTH_NUMBER  COVAR_POP COVAR_SAMP
--------------------- ---------- ----------
                    1 5437.68586 5437.88704
                    2 5923.72544 5923.99139
                    3 6040.11777 6040.38623
                    4 5946.67897 5946.92754
                    5 5986.22483  5986.4463
                    6 5726.79371 5727.05703
                    7 5491.65269  5491.9239
                    8 5672.40362 5672.66882
                    9 5741.53626 5741.80025
                   10  5050.5683 5050.78195
                   11 5256.50553 5256.69145
                   12  5411.2053 5411.37709

분석 예제

다음 예제는 schema oe에서 list_price와 Min_price의 누적 모집단 분산과 누적 표본 분산을 계산한다.

SELECT product_id, supplier_id,
       COVAR_POP(list_price, min_price) OVER (ORDER BY product_id, supplier_id) AS CUM_COVP,
       COVAR_SAMP(list_price, min_price) OVER (ORDER BY product_id, supplier_id) AS CUM_COVS
FROM product_information p
WHERE category_id = 29
ORDER BY product_id, supplier_id;

PRODUCT_ID SUPPLIER_ID   CUM_COVP   CUM_COVS
---------- ----------- ---------- ----------
      1774      103088          0
      1775      103087    1473.25     2946.5
      1794      103096 1702.77778 2554.16667
      1825      103093    1926.25 2568.33333
      2004      103086     1591.4    1989.25
      2005      103086     1512.5       1815
      2416      103088 1475.97959 1721.97619
. . .


COVAR_SAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

COVAR_SAMP

문법

covar_samp::=
Description of covar_samp.gif follows

그림 설명

목적

COVAR_SAMP 함수는 number 쌍의 집합에 대한 sample covariance를 반환한다.

COVAR_SAMP함수는 number쌍의 세트의 표본 공분산을 반환한다. 집계함수 또는 분석 함수로 이용된다.

이 함수는 임의의 수치형 데이터 형 또는 암묵적으로 수치형으로 변환할수 있는 비수치형 데이터를 취한다. 오라클은 수치 순위가 가장 높은 인수를 판단하여, 나머지 인수를 그 인수의 데이터형으로 암묵적으로 변환한다.

오라클 데이터 베이스는 expr1 또는 expr2가 Null인 모든 쌍을 제외한후에 (expr1,expr2) 쌍의 세트에 적용한다. 오라클은 다음과 같이 계산한다.

(SUM(expr1 * expr2) - SUM(expr1) * SUM(expr2) / n) / (n-1)

where n 은 (expr1,expr2)쌍의 수. expr1 과 expr2가 모두 Null이 아닌 쌍.

함수는 Number 타입의 값을 반환한다. 만약 함수가 empty 세트를 적용하면, Null을 반환한다.

집계 예제

Please refer to the aggregate example for COVAR_POP .

분석 예제

Please refer to the analytic example for COVAR_POP .


CUME_DIST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CUME_DIST

집계 문법

cume_dist_aggregate::=
Description of cume_dist_aggregate.gif follows
그림 설명

분석 문법

cume_dist_analytic::=
Description of cume_dist_analytic.gif follows
그림 설명

See Also:

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

CUME_DIST함수는 값의 그룹에 있는 값의 누적 분포치를 계산한다. 반환되는 값의 범위는 0보다 크고 1보다 작다. 이값은 항상 같은 누적 값에 대하여 평가한다. 이 함수는 임의의 수치형 데이터 또는 암묵적으로 수치 데이터형으로 변환 가능한 비 수치형데이터이다. 오라클 데이터베이스는 수치 우선 순위가 가장 높은 인수를 판단하여, 나머지 인수를 암묵적으로 변환하고, 계산을 수행하여 NUMBER를 반환한다.

PARTITION BY에 의해 나누어진 그룹별로 각 row를 ORDER BY절에 명시된 순서로 정렬한 후 그룹별 상대적인 위치(누적된 분산정도)를 구한다. 상대적인 위치는 구하고자 하는 값보다 작거나 같은 값을 가진 ROW수를 그룹내 총 ROW 수로 나눈 것을 의미하며 결과 값의 범위는 0보다 크고 1보다 작거나 같다.

SELECT  r_regionkey, p_productkey, SUM(s_amount) as s_amount,
    CUME_DIST() OVER (PARTITION BY r_regionkey ORDER BY SUM(s_amount))
    AS cume_dist_per_region
FROM region, product, sales
WHERE r_regionkey = s_regionkey AND p_productkey = s_productkey
GROUP BY r_regionkey, p_productkey ORDER BY r_regionkey, s_amount DESC;

[그림] CUME_DIST()의 활용

집계 예제

다음 예제는 oe.employees테이블에서 종업원 중에서 급여가 15,500달러이고, 수수료가 5%인 종업원의 누적 분포를 계산한다.

SELECT CUME_DIST(15500, .05) WITHIN GROUP
   (ORDER BY salary, commission_pct) "Cume-Dist of 15500"
   FROM employees;

Cume-Dist of 15500
------------------
        .972222222

분석 예제

다음 예제는 구매 부분의 각 종업원의 급여 퍼센트를 계산한다. 예를 들어, 종업원의 40%가 Himuro의 급여 이하의 급여를 받는 것을 알 수 있다.

SELECT job_id, last_name, salary, CUME_DIST()
   OVER (PARTITION BY job_id ORDER BY salary) AS cume_dist
   FROM employees
   WHERE job_id LIKE 'PU%';

JOB_ID     LAST_NAME                     SALARY  CUME_DIST
---------- ------------------------- ---------- ----------
PU_CLERK   Colmenares                      2500         .2
PU_CLERK   Himuro                          2600         .4
PU_CLERK   Tobias                          2800         .6
PU_CLERK   Baida                           2900         .8
PU_CLERK   Khoo                            3100          1
PU_MAN     Raphaely                       11000          1


DENSE_RANK

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

DENSE_RANK

집계 문법

dense_rank_aggregate::=
Description of dense_rank_aggregate.gif follows

그림 설명

분석 문법

dense_rank_analytic::=
Description of dense_rank_analytic.gif follows

그림 설명

See Also:

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

DENSE_RANK()는 Rank()와 유사한 함수로ORDER BY절에 사용된 컬럼이나 표현식에 대하여 순위를 부여하는데 RANK()와 달리 동일 순위 다음의 순위는 동일 순위의 수와 상관없이 1 증가된 값을 돌려준다.

DENSE_RANK함수는 행의 행의 순서화된 그룹에서 행의 순위를 계산하고, NUMBER로써 순위를 반환한다.순서는 1로 시작하는 연속한 정수이다. 가장큰 순서 값은 쿼리에 의해 반환되는 유일한 값의 순서이다. 순서값은 동률에서 생략되지 않는다. 순서 기준에 대하여 같은 값을 가진 행은 같은 순서를 가진다. 이 함수는 top-N과 bottom-N reporting에 대하여 유용하다.

이 함수는 임의의 수치형 값을 인수로 취하고, NUMBER값을 반환한다.

  • 집계함수로써, DENSE_RANK함수는 주어진 SORT 내역을 고려하여 함수의 인수에 의해 식별되는 불확실한 행의 밀도 순서(RANK)를 계산한다.함수의 인수는 각 그룹 안에서 단일 행을 식별하기 때문에, 각 집계 그룹내에서 상수 식에 대하여 모두 평가될 필요가 있다. 상수 인수 표현과 집계의 order_by_clause안에서 표현은 위치가 일치한다. 그러므로, 인수의 수는 같고, 형태는 호환성이 있을 필요가 있다.

  • 분석 함수로써, DENSE_RANK함수는 order_by_clause에서 value_exprs의 값에 근거한, 다른 행에 대해서 반환되는 각 행의 순서를 계산한다.

DENSE_RANK()는 Rank()와 유사한 함수로ORDER BY절에 사용된 컬럼이나 표현식에 대하여 순위를 부여하는데 RANK()와 달리 동일 순위 다음의 순위는 동일 순위의 수와 상관없이 1 증가된 값을 돌려준다.

[그림] RANK()와 DENSE_RANK()의 비교

집계 예제

다음 예제는 샘플 테이블 oe.employees에서 급여가 $15,500이고, 수수료가 5%의 가상 종업원의 순서를 계산한다.

SELECT DENSE_RANK(15500, .05) WITHIN GROUP
       (ORDER BY salary DESC, commission_pct) "Dense Rank"
FROM employees;

         Dense Rank
-------------------
                  3
분석 예제

다음 예제는 인사부문 또는 구매부문에서 일하는 모든 종업원의 부서명, 종업원명, 급여를 선택하고, 2개의 부서 각각에 대하여 각 유일한 급여에 대하여 순서를 계산한다. 동일한 급여에 대하여 같은 순서가 메겨진다. RANK 예제 참조.

SELECT d.department_name, e.last_name, e.salary, DENSE_RANK()
       OVER (PARTITION BY e.department_id ORDER BY e.salary) as drank
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND d.department_id IN ('30', '40');

DEPARTMENT_NAME         LAST_NAME              SALARY      DRANK
----------------------- ------------------ ---------- ----------
Purchasing              Colmenares               2500          1
Purchasing              Himuro                   2600          2
Purchasing              Tobias                   2800          3
Purchasing              Baida                    2900          4
Purchasing              Khoo                     3100          5
Purchasing              Raphaely                11000          6
Human Resources         Marvis                   6500


FIRST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

FIRST

문법

first::=
Description of first.gif follows

그림 설명

목적

FIRST 와 LAST는 매우 유사한 함수이다. FIRST와 last함수는 주어진 소트 지정에 대해서 FIRST 또는 LAST로서 순위를 주어서 행의 세트로부터 값의 세트에 운영하는 집계와 분석 함수이다. 만약 단지 하나의 행이 FIRST 또는 LAST로서 순위를 지정하면, 집계 함수는 하나의 요소를 가지고 세트를 운영한다.

이 함수는 임수로써 임의 수치형 데이터 타입 또는 수치형 데이터로 암묵적으로 변환가능한 비수치형 데이터형을 취한다. 이 함수는 인수의 수치형과 같은 데이터형을 반환한다.

소트된 그룹의 첫번째 또는 마지막 행의 값이 필요하고, 그 값이 소트 키가 아닌경우에는, FIRST와 LAST함수는 self join 또는 VIEW에 대한 필요성을 배제하고, 더 좋은 퍼포먼스를 낸다.

  • aggregate_function은 MIN,MAX,SUM,AVG,COUNT,VARIANCE,STDDEV함수중에 하나이다. 그것은 FIRST 또는 LAST중에 하나로 순위화된 행으로 부터 값을 조작한다. 만약 단지 하나의 행이 FIRST 또는 LAST로 순서화 되는 경우, 집계함수는 단일(집계가 아닌)세트로 조작된다.

  • DENSE_RANK FIRST 또는 DENSE_RANK LAST은 최소(FIRST) 또는 최대(LAST) 밀도 순위를 가지는 행만을 집계할것이다.

OVER 구문을 지정함에 의해서 분석 함수로써 FIRST와 LAST함수를 이용할수 있다. query_partitioning_clause 는 이 함수를 가지는 OVER구문의 일부로 유효하다.

집계 예제

다음 예제는 샘플 테이블 hr.employees의 각 부분에서 가장 적은 수수료를 가지는 종업원 사이에서 최저 급여와 가장 많은 수수료를 가지는 종업원 사이에서 최고 급여를 반환한다.

SELECT department_id,
       MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct) "Worst",
       MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct) "Best"
FROM employees
GROUP BY department_id;

DEPARTMENT_ID      Worst       Best
------------- ---------- ----------
           10       4400       4400
           20       6000      13000
           30       2500      11000
           40       6500       6500
           50       2100       8200
           60       4200       9000
           70      10000      10000
           80       6100      14000
           90      17000      24000
          100       6900      12000
          110       8300      12000
                    7000       7000

분석 예제

다음 예제는 이전 예제와 같은 계산을 하지만, 해당 부서의 각 종업원에 대한 결과를 반환한다.

SELECT last_name, department_id, salary,
   MIN(salary) KEEP (DENSE_RANK FIRST ORDER BY commission_pct)
      OVER (PARTITION BY department_id) "Worst",
   MAX(salary) KEEP (DENSE_RANK LAST ORDER BY commission_pct)
      OVER (PARTITION BY department_id) "Best"
    FROM employees
    ORDER BY department_id, salary;

LAST_NAME           DEPARTMENT_ID     SALARY      Worst       Best
------------------- ------------- ---------- ---------- ----------
Whalen                         10       4400       4400       4400
Fay                            20       6000       6000      13000
Hartstein                      20      13000       6000      13000
. . .
Gietz                         110       8300       8300      12000
Higgins                       110      12000       8300      12000
Grant                                   7000       7000       7000


GROUP_ID

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

GROUP_ID

문법

group_id::=
Description of group_id.gif follows

그림 설명

목적

GROUP_ID함수는 지정된 GROUP BY 결과로부터 중복된 그룹을 구별한다. 이 함수는 질의 결과에서 중복된 GROUPING을 필터링 하는데 유용하다. 유일한 중복 그룹을 식별하기 위해서 ORACLE NUMBER를 반환한다. 이 함수는 GROUP BY구문을 소유한 SELECT문장에서 적용된다. 만약 n이 특정 그룹핑에서 중복이 존재한다면, GROUP_ID는 0~n-1 범위의 수를 반환한다.

예제

다음 예제는 sh.countries와 sh.sales의 쿼리로부터 중복된 co.country_region 그룹핑에 1의 값을 할당한다.

SELECT co.country_region, co.country_subregion,
       SUM(s.amount_sold) "Revenue",
       GROUP_ID() g
FROM sales s, customers c, countries co
WHERE s.cust_id = c.cust_id AND
      c.country_id = co.country_id AND
      s.time_id = '1-JAN-00' AND
      co.country_region IN ('Americas', 'Europe')
GROUP BY co.country_region,
ROLLUP (co.country_region, co.country_subregion);

COUNTRY_REGION       COUNTRY_SUBREGION       Revenue          G
-------------------- -------------------- ---------- ----------
Americas             Northern America         220844          0
Americas             Southern America          10872          0
Europe               Eastern Europe            12751          0
Europe               Western Europe           558686          0
Americas                                      231716          0
Europe                                        571437          0
Americas                                      231716          1
Europe                                        571437          1

GROUP_ID <1 인 행을 되돌리기 위해서, 문장의 마지막에 다음의 HAVING구문을 추가한다.

HAVING GROUP_ID() < 1


GROUPING

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

GROUPING

문법

grouping::=
Description of grouping.gif follows

그림 설명

목적

GROUPING함수는 ROLLUP이나 CUBE 연산자와 함께 사용하여 GROUPING 함수에 기술된 컬럼이 그룹핑 시 즉, ROLLUP이나 CUBE 연산시 사용이 되었는지를 보여 주는 함수이다.
특별히 연산 기능은 없으며 ROLLUP이나 CUBE 연산 후 출력된 결과에 대한 사용자의 이해를 높이기 위해 사용된다.
즉, GROUPING 함수를 이용할 경우 출력되는 결과값 중 NULL값이 있다면 이 NULL값이 ROLLUP이나 CUBE 연산의 결과로 생성된 것인지, 원래 테이블상에 NULL값으로 저장된 것인지를 확인할 수 있다.

GROUPING함수는 규칙적인 그룹화된 행에서부터 superaggregate을 구별한다. ROLLUP과 CUBE와 같은 GROUP BY의 확장기능은 모든 값의 집합이 Null에 의해 나타나지는 superaggregate 행을 생성한다. GOUPING함수를 이용하면, 규칙적인 행의 null로부터 superaggregate 행의 모든 값의 집합을 나타내는 null을 구별할수 있다.

참고 (http://radiocom.kunsan.ac.kr/lecture/oracle/function/GROUPING.html)

GROUPING 함수에서 expr은 GROUP BY구문에서 표현중에 하나와 일치할 필요가 있다. 만약 행중의 expr의 값이 모든 값 집합에서 나타나는 null이라면, 1의 값을 반환한다. 그 이외의 경우에는 zero를 반환한다. GROUPING함수에 의해 반환되는 값의 데이터 형은 Oracle NUMBER이다. SELECT group_by_clause 를 참조.

GROUPING 함수는 ROLLUP이나 CUBE 연산자와 함께 사용하여 GROUPING 함수에 기술된 컬럼이 그룹핑 시 즉, ROLLUP이나 CUBE 연산시 사용이 되었는지를 보여 주는 함수이다. 특별히 연산 기능은 없으며 ROLLUP이나 CUBE 연산 후 출력된 결과에 대한 사용자의 이해를 높이기 위해 사용된다. 즉, GROUPING 함수를 이용할 경우 출력되는 결과값 중 NULL값이 있다면 이 NULL값이 ROLLUP이나 CUBE 연산의 결과로 생성된 것인지, 원래 테이블상에 NULL값으로 저장된 것인지를 확인할 수 있다.

  • grouping 함수는 인수 로 하나의 값만을 가질 수 있다.
  • grouping 함수에 사용된 인수는 GROUP BY 절에 기술된 값중에 하나와 반드시 일치되어야 한다.
  • GROUPING 함수는 결과값으로 0 또는 1을 리턴한다. 0값을 리턴하는 경우, 해당 인수로 쓰인 값이 ROLLUP이나 CUBE 연산시 사용되어 졌음을 나타내는 것이고, 1값을 리턴하는 경우 ROLLUP이나 CUBE 연산시 사용되어 지지 않았음을 나타낸다.

Group by에서 Rollup과 Cube 조건 참조

http://radiocom.kunsan.ac.kr/lecture/oracle/statement_select/rollup_cube.html

예제

다음 예제는 hr.departments와 hr.employees테이블에서 만약 GROUPING 함수가 1을 반환했다면(테이블에서 규칙적 행보다 superaggregate행을 지적), 그때는 그 이외의 경우에 표시되는 null 대신에 문자열 "All Jobs"이 "JOB"열에 표시된다. (Rollup 결과로 발생하는 JOB의 NULL값을 "All Jobs"로 변경)

SELECT DECODE(GROUPING(department_name), 1, 'All Departments',
       department_name) AS department,
       DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job,
      COUNT(*) "Total Empl", AVG(salary) * 12 "Average Sal"
FROM employees e, departments d
WHERE d.department_id = e.department_id
GROUP BY ROLLUP (department_name, job_id);

DEPARTMENT                     JOB        Total Empl Average Sal
------------------------------ ---------- ---------- -----------
Accounting                     AC_ACCOUNT          1       99600
Accounting                     AC_MGR              1      144000
Accounting                     All Jobs            2      121800
Administration                 AD_ASST             1       52800
Administration                 All Jobs            1       52800
Executive                      AD_PRES             1      288000
Executive                      AD_VP               2      204000
Executive                      All Jobs            3      232000
Finance                        FI_ACCOUNT          5       95040
Finance                        FI_MGR              1      144000
Finance                        All Jobs            6      103200
. . .


GROUPING_ID

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

GROUPING_ID

문법

grouping_id::=
Description of grouping_id.gif follows

그림 설명

목적

GROUPING_ID함수는 행과 관련되는 GROUPING 비트 벡터에 대응되는 수치를 반환.

GROUPING_ID함수는 행과 관련된 GROUPING 비트 벡터에 대응하는 수치를 반환한다. GROUPING_ID는 ROLLUP,CUBE,GROUPING함수와 같은 GROUP BY 확장 기능을 포함한 SELECT문장에서 적용할수 있다. 많은 GROUP BY 표현을 가지는 쿼리에서,많은 GROUPING함수를 필요로 하는 특정한 행의 GROUP BY 레벨을 지정하기 위해서는 복장한 SQL이 요구된다. GROUPING_ID는 이런 경우 유용하다.

GROUPING_ID함수는 다수의 GROUPING함수의 결과와 비트 벡터(1과 0의 문자열)를 연결하는 것과 동일하다. GROUPING_ID를 이용하여서 다수의 GROUPING함수를 사용하지 않고서, 표현하기 위한 행의 필터 조건이 간단해진다. 행 필터링은 원하는 행이 GROUPING_ID=n의 단일 조건으로 정의 될수 있어서 더 쉬워진다. 함수는 단일 테이블에서 다수의 집계의 레벨을 저장할때 유용하다.

예제

다음 예제는 샘플 테이블 sh.sales의 쿼리로부터 그룹핑 ID를 추출하는 방법을 보여준다.

SELECT channel_id, promo_id, sum(amount_sold) s_sales,
       GROUPING(channel_id) gc,
       GROUPING(promo_id) gp,
       GROUPING_ID(channel_id, promo_id) gcp,
       GROUPING_ID(promo_id, channel_id) gpc
FROM sales
WHERE promo_id > 496
GROUP BY CUBE(channel_id, promo_id);

C   PROMO_ID    S_SALES         GC         GP        GCP        GPC
- ---------- ---------- ---------- ---------- ---------- ----------
C        497   26094.35          0          0          0          0
C        498    22272.4          0          0          0          0
C        499    19616.8          0          0          0          0
C       9999   87781668          0          0          0          0
C            87849651.6          0          1          1          2
I        497    50325.8          0          0          0          0
I        498    52215.4          0          0          0          0
I        499   58445.85          0          0          0          0
I       9999  169497409          0          0          0          0
I             169658396          0          1          1          2
P        497   31141.75          0          0          0          0
P        498    46942.8          0          0          0          0
P        499      24156          0          0          0          0
P       9999   70890248          0          0          0          0
P            70992488.6          0          1          1          2
S        497  110629.75          0          0          0          0
S        498   82937.25          0          0          0          0
S        499   80999.15          0          0          0          0
S       9999  267205791          0          0          0          0
S             267480357          0          1          1          2
T        497     8319.6          0          0          0          0
T        498    5347.65          0          0          0          0
T        499      19781          0          0          0          0
T       9999   28095689          0          0          0          0
T            28129137.3          0          1          1          2
         497  226511.25          1          0          2          1
         498   209715.5          1          0          2          1
         499   202998.8          1          0          2          1
        9999  623470805          1          0          2          1
              624110031          1          1          3          3


LAST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LAST

문법

last::=
Description of last.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions of the query_partitioning_clause

목적

FIRST and LAST 함수는 행을 서열화 시켜서 첫 번째나 마지막 행을 추출.

FIRST and LAST함수는 매우 유사한 함수이다. 양쪽 모두 주어진 소팅 순서 지정에 대하여 FIRST 또는 LAST와 같은 순서로 정렬하여 행의 집합으로 부터 값을 조작하는 집계함수, 분석함수이다. 만약 단지 한개의 행을 FIRST 또는 LAST로 RANK되는 경우, 집계 연산은 단지 하나의 요소만으로 연산한다.

이 함수는 임의의 수치 데이터 형또는 암묵적으로 수치형으로 변환 가능한 비수치 데이터형을 취한다. 이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.

이 함수의 예제는 FIRST 참조.


MAX

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

MAX

문법

max::=
Description of max.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

MAX 함수는 인수중에서 최대값을 반환한다. 집계함수, 분석 함수로 이용가능하다.

만약 DISTINCT를 지정했다면, analytic_clause 의 query_partition_clause 을 지정할수 있다. 그러나, order_by_clause 과 windowing_clause 은 허용하지 않는다.

집계 예제

다음 예제는 hr.employees 테이블에서 최고 급여를 계산한다.

SELECT MAX(salary) "Maximum" FROM employees;

   Maximum
----------
      24000

분석 예제

다음 예제는 같은 manager_id내에서 최고 급여를 계산한다.

SELECT manager_id, last_name, salary,
   MAX(salary) OVER (PARTITION BY manager_id) AS mgr_max
   FROM employees;

MANAGER_ID LAST_NAME                     SALARY    MGR_MAX
---------- ------------------------- ---------- ----------
       100 Kochhar                        17000      17000
       100 De Haan                        17000      17000
       100 Raphaely                       11000      17000
       100 Kaufling                        7900      17000
       100 Fripp                           8200      17000
       100 Weiss                           8000      17000
. . .

만약 INLINE-VIEW로 위 결과를 사용하면, 각 MANAGER_ID에서 가장 높은 급여를 받는 종업원을 정의 할수 있다. 즉, 동일 MANAGER_ID의 최대값(최대 급여)을 계산후에 그 최대값(최대 급여)을 가지는 사람을 찾는 방법이다.

SELECT manager_id, last_name, salary
   FROM (SELECT manager_id, last_name, salary,
      MAX(salary) OVER (PARTITION BY manager_id) AS rmax_sal
      FROM employees) WHERE salary = rmax_sal;

MANAGER_ID LAST_NAME                     SALARY
---------- ------------------------- ----------
       100 Kochhar                        17000
       100 De Haan                        17000
       101 Greenberg                      12000
       101 Higgens                        12000
       102 Hunold                          9000
       103 Ernst                           6000
       108 Faviet                          9000
       114 Khoo                            3100
       120 Nayer                           3200
       120 Taylor                          3200
       121 Sarchand                        4200
       122 Chung                           3800
       123 Bell                            4000
       124 Rajs                            3500
       145 Tucker                         10000
       146 King                           10000
       147 Vishney                        10500
       148 Ozer                           11500
       149 Abel                           11000
       201 Goyal                           6000
       205 Gietz                           8300
           King                           24000


MEDIAN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

MEDIAN

문법

median::=
Description of median.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

MEDIAN함수는 연속된 분산 모델을 가정한 역 분포 함수이다. 이 함수는 수치 또는 일자값을 취하고, 중앙값 또는 값의 정렬후에 중앙값이 보간된 값을 반환한다. Null값들은 계산시 무시된다.

이 함수는 인수로써 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치데이터형을 취한다. 만약 epr이 지정되었으면, 이 함수는 인수의 수치형과 같은 데이터형을 반환한다. 만약 OVER구문을 지정했다면, 오라클 데이터베이스는 가장 높은 수치 순위를 판단하고, 나머지 인수를 그 데이터형에 암묵적으로 변환하고, 그 데이터형을 반환한다.

MEDIAN함수의 결과는 처음 순서 행에 의해 계산된다. 그룹내에서 행의 수 N을 이용하여서, 오라클은 식 RN = (1 + (0.5*(N-1))을 이용하여 행 번호(RN)를 계산한다. 집계 함수의 최종 결과는 행번호 CRN=CEILING(RN)과 FRN=FLOOR(RN)으로 값들 사이의 선형 보간에 의해 계산된다.

분석 함수로써 MEDIAN함수를 이용할 수 있다. OVER구문에서는 단지 query_partiton_clause만을 지정할 수 있다. 각 행에 대해서 각 파티션 안에서 값사이의 중앙값에 해당하는 값을 반환한다.

최종결과는 다음과 같다.

if (CRN = FRN = RN) then
      (value of expression from row at RN)
   else
      (CRN - RN) * (value of expression for row at FRN) +
      (RN - FRN) * (value of expression for row at CRN)

분석 함수로써 MEDIAN함수를 이용할 수 있다. OVER구문에서는 단지 query_partiton_clause만을 지정할 수 있다. 각 행에 대해서 각 파티션 안에서 값사이의 중앙값에 해당하는 값을 반환한다.

이 함수와 다음 함수를 비교하자.

  • PERCENTILE_CONT 함수는 지정한 백분위수에 대하여 보간 방법에 의해 상응하는 값을 반환한다. MEDIAN함수는 백분위수가 기본적으로 0.5로 지정된 PERCENTILE_CONT 함수의 특별한 상태이다.

  • PERCENTILE_DISC 함수는 주어진 백분위수에 대하여 보간 없이 값을 검색하는데 유용하다.

예제

다음 예제는 hr.employee 테이블에서 각 부서에 대해 중앙값 급여를 반환한다.

SELECT department_id, MEDIAN(salary)
   FROM employees
   GROUP BY department_id;

DEPARTMENT_ID MEDIAN(SALARY)
------------- --------------
           10           4400
           20           9500
           30           2850
           40           6500
           50           3100
           60           4800
           70          10000
           80           8900
           90          17000
          100           8000
          110          10150
                        7000


MIN

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

MIN

문법

min::=
Description of min.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

MIN함수는 인수중에서 최소값을 반환한다. 집계 함수,분석 함수 모두 이용가능하다.

만약 DISTINCT를 지정했다면, analytic_clause 의 query_partition_clause 을 지정할수 있다. 그러나, order_by_clause 과 windowing_clause 은 허용하지 않는다.

집계 예제

다음 예제는 hr.employees 테이블에서 최초의 고용일을 반환한다.

SELECT MIN(hire_date) "Earliest" FROM employees;

Earliest
---------
17-JUN-87

분석 예제

다음 예제는 각 종업원에 대하여, 그 종업원이 고용되기 이전에 고용된 종업원을 검색한다. 같은 Manager 내에서 해당 고용일 이전에 고용된 종업원들 중에서 제일 낮은 급여를 반환한다.

SELECT manager_id, last_name, hire_date, salary,
   MIN(salary) OVER(PARTITION BY manager_id ORDER BY hire_date
   RANGE UNBOUNDED PRECEDING) as p_cmin
   FROM employees;

MANAGER_ID LAST_NAME                 HIRE_DATE     SALARY     P_CMIN
---------- ------------------------- --------- ---------- ----------
       100 Kochhar                   21-SEP-89      17000      17000
       100 De Haan                   13-JAN-93      17000      17000
       100 Raphaely                  07-DEC-94      11000      11000
       100 Kaufling                  01-MAY-95       7900       7900
       100 Hartstein                 17-FEB-96      13000       7900
       100 Weiss                     18-JUL-96       8000       7900
       100 Russell                   01-OCT-96      14000       7900
       100 Partners                  05-JAN-97      13500       7900
       100 Errazuriz                 10-MAR-97      12000       7900
. . .


PERCENT_RANK

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

PERCENT_RANK

집계 문법

percent_rank_aggregate::=
Description of percent_rank_aggregate.gif follows

그림 설명

분석 문법

percent_rank_analytic::=
Description of percent_rank_analytic.gif follows

D그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

PERCENT_RANK함수는 그룹 수에 대한 값의 순위 퍼센트를 반환.

PERCENT_RANK함수는 CUME_DIST(누적 분포)함수와 유사하다. PERCENT_RANK에 의해 반환되는 값의 범위는 0~1(포함한)이다. 모든 집합의 최초 행은 0의 PERCENT_RANK이다. 반환되는 값은 NUMBER이다.

  • 집계 함수로써, PERCENT_RANK함수는 함수의 인수와 대응하는 소트 지정에 의해서 선택된 불확적정인 행 r을 계산하여서, 행 r의 RANK로부터 1을 빼고, 집계 그룹내의 행의 수로 나눈다. 이 계산은 불확실한 행 r이 오라클 데이터베이스가 집계하는 행의 그룹에 삽입되듯이 계산한다. 함수의 인수는 각 집계 그룹내의 하나의 불확실한 행을 식별한다. 그러므로, 각 집계 그룹내에서 상수 표현으로 평가될 필요가 있다. 상수 인수식과 집계의 ORDER BY구문의 식의 위치는 일치한다. 그러므로 인수의 수는 같아야하고, 그 형태는 호환되어야 한다.

  • 분석 함수로써 PERCENT_RANK함수는 행 r에 대하여 r의 Rank로부터 1을 뺀 수를 평가되어지는 행(전체 쿼리결과 세트 또는 파티션)수에서 1을 뺀수로 나눈다.

CUME_DIST함수와 유사한 함수이나 PARTITION별 각 row의 순위 -1/PARTITION내의 ROW의 수를 결과값으로 하며, 결과값의 범위는 0<=결과값<=1이고 집합의 첫번째 row의 PERCENT_RANK는 항상 0이 된다.

[그림] CUME_DIST()와 PERCENT_RANK의 비교

집계 예제

다음 예제는 hr.employees테이블에서 급여가 $15,500이고, 수수료가 5%인 불확실한 종업원의 Percent Rank를 계산한다.

SELECT PERCENT_RANK(15000, .05) WITHIN GROUP
      (ORDER BY salary, commission_pct) "Percent-Rank"
FROM employees;

Percent-Rank
------------
  .971962617

분석 예제

다음 예제는 종업원마다 부서내에서 종업원 급여의 Percent Rank를 계산한다.

SELECT department_id, last_name, salary,
       PERCENT_RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS pr
FROM employees
ORDER BY pr, salary;

DEPARTMENT_ID LAST_NAME                     SALARY         PR
------------- ------------------------- ---------- ----------
           10 Whalen                          4400          0
           40 Marvis                          6500          0
. . .
           80 Vishney                        10500 .176470588
           50 Everett                         3900 .181818182
           30 Khoo                            3100         .2
. . .
           80 Johnson                         6200 .941176471
           50 Markle                          2200 .954545455
           50 Philtanker                      2200 .954545455
           50 Olson                           2100          1
. . .


PERCENTILE_CONT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

PERCENTILE_CONT

문법

percentile_cont::=
Description of percentile_cont.gif follows

그림 설명

목적

PERCENTILE_CONT 함수는 연속된 분포 모델을 가정한 역 분포 함수(inverse distribution function) 이다. 이 함수는 백분위수 값과 소트 지정을 취하고, 소트 지정에 해당하는 백분위수 값에 해당하는 보간된 값을 반환한다. 계산시 NULL은 무시된다.

이 함수는 인수로써 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 함수는 인수츼 수치 데이터형과 같은 데이터형을 반환한다.

처음 expr은 백분위수 값이기 때문에 0과 1사이의 수치 값으로 평가되어야 한다. 이 expr은 각 집계 그룹내에서 상수일 필요가 있다. ORDER BY구문은 오라클이 보간을 실행할수 있는 형태인 수치 또는 datetime 값을 단일 식으로 취한다.

PERCENTILE_CONT의 결과는 순서화 된 후에 값 사이에 선형 보간에 의해 계산된다. 집계 그룹안에서 백분위 값(P)과 행의 수(N)을 이용해, 소트 지정에 대해서 행을 순서화 한 후에 관심있는 행의 수를 계산한다. 이 행의 수(RN)는 계산식 RN=(1+(P*(N-1))에 따라서 계산한다. 집계 함수의 마지막 결과는 행번호 CRN=CEILING(RN)과 FRN=FLOOR(RN)의 행으로 부터 값 사이의 선형 보간에 의해 계산된다.

최종결과는 다음과 같다.

If (CRN = FRN = RN) then the result is
    (value of expression from row at RN)
  Otherwise the result is
    (CRN - RN) * (value of expression for row at FRN) +
    (RN - FRN) * (value of expression for row at CRN)

분석 함수로써 PERCENTILE_CONT함수를 이용할수 있다. OVER구문에서는 단지 query_partitioning_clause를 지정할수있다.
각 행에 대해서 각 파티션내의 값의 세트 사이에서 지정된 백분위에 해당하는 값을 반환한다.
MEDIAN함수는 백분위 값이 기본값 0.5로 지정한 PERCENTILE_CONT의 특별한 경우이다. MEDIAN 참조.

집계 예제
다음 예제는 각 부서 내에서 중앙 급여를 계산한다.
SELECT department_id,
      PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary DESC) "Median cont",
      PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary DESC) "Median disc"
FROM employees
GROUP BY department_id;

DEPARTMENT_ID Median-cont Median-disc
------------- ----------- -----------
           10        4400        4400
           20        9500       13000
           30        2850        2900
           40        6500        6500
           50        3100        3100
           60        4800        4800
           70       10000       10000
           80        8800        8800
           90       17000       17000
          100        8000        8200
          110       10150       12000
PERCENTILE_CONT와 PERCENTILE_DISC는 다른 결과를 반환할 경우기 있다. PERCENTILE_CONT는 직선 보간 후의 결과를 계산한다.
PERCENTILE_DISC는 집계된 값의 세트로 부터 값을 반환한다.
이 예제처럼 백분위 값이 0.5일때, PERCENTILE_CONT는 요소의 짝수를 가지는 그룹에 대해서 2개의 중앙값의 평균을 반환한다.
반면에 PERCENTILE_DISC함수는 2개의 중앙값 사이의 첫번째 값을 반환한다.
요소의 홀수 원소를 가지는 집계 그룹에 대하여 양쪽 함수 모두 중앙 원소의 값을 반환한다.

분석 예제
다음 예제에서, 0.5의 백분위(percent_Rank)에 상응하는 부서 60의 중앙값은 4800이다. 부서 30에서 급여의 0.5 백분위가 없기 때문에,
중앙값은 2900(백분위 0.4)와 2800(백분위 0.6)의 사이에서 보간되어서 2850으로 평가된다.
SELECT last_name, salary, department_id,
       PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary DESC)
         OVER (PARTITION BY department_id) "Percentile_Cont",
       PERCENT_RANK()
         OVER (PARTITION BY department_id ORDER BY salary DESC) "Percent_Rank"
FROM employees WHERE department_id IN (30, 60);

LAST_NAME         SALARY DEPARTMENT_ID Percentile_Cont Percent_Rank
------------- ---------- ------------- --------------- ------------
Raphaely           11000            30            2850            0
Khoo                3100            30            2850           .2
Baida               2900            30            2850           .4
Tobias              2800            30            2850           .6
Himuro              2600            30            2850           .8
Colmenares          2500            30            2850            1
Hunold              9000            60            4800            0
Ernst               6000            60            4800          .25
Austin              4800            60            4800           .5
Pataballa           4800            60            4800           .5
Lorentz             4200            60            4800            1


PERCENTILE_DISC

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

PERCENTILE_DISC

문법

percentile_disc::=
Description of percentile_disc.gif follows

그림 설명

목적

PERCENTILE_DISC함수는 이산 분포 모형을 가정하는 역 분포 함수이다.이 함수는 백분위수와 소트 지정을 취해서, 세트로부터 요소를 반환한다. 계산에서 Null은 무시된다.

이 함수는 인수로써 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비 수치 데이터형을 취한다. 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.

처음 expr은 0~1 사이의 수치값으로 평가된다. 왜냐하면 백분위 값이기 때문이다. 이 표현은 각 집계 그룹내에서 상수가 될필요가 있다. ORDER BY구문은 소트 가능한 단일 표현을 취한다.

주어진 백분위 값 P에 대해서, PERCENTILE_DISC는 ORDER BY 구문에서 표현의 값을 소트하여서, P 이상인(같은 소트 지정에 따르는)것 중에 최소 CUME_DIST값을 가지는 값을 반환한다.

-INVERSE PERCENTILE FUNCTION

CUME_DIST 함수를 이용하여 값들의 집합에서 값의 위치를 계산할 수 있었으나 역산 (특정한 백분위수의 값을 발견하는)은 어렵거나 효과적인 연산이 수행되지는 않습니다. 이러한 어려움을 극복하기 위하여 PERCENTILE_CONT와 PERCENTILE_DISC 같은 역 분포 함수를 제공합니다. PERCENTILE_CONT는 연속분포 (Continuous Distribution)를 가정한 역 분포 함수이고, PERCENTILE_DISC는 이산분포(Discrete Distribution)를 가정한 역 분포 함수입니다.

PERCENTILE_CONT: 입력받은 수치 값이 어느 두 값의 사이일 경우 두 값의 사이에서 계산된 값을 리턴한다.
PERCENTILE_DISC: 입력받은 수치 값이 어느 두 값의 사이일 경우 다른 계산과정 없이 작은 값을 그대로 리턴한다.

집계 예제

PERCENTILE_CONT 예제 참조.

분석 예제

다음 예제는 샘플 테이블 hr.employess에서 각 종업원의 급여의 중앙값 이산 백분위를 계산한다.

SELECT last_name, salary, department_id,
       PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary DESC)
                   OVER (PARTITION BY department_id) "Percentile_Disc",
       CUME_DIST() OVER (PARTITION BY department_id
                   ORDER BY salary DESC) "Cume_Dist"
FROM employees where department_id in (30, 60);

LAST_NAME         SALARY DEPARTMENT_ID Percentile_Disc  Cume_Dist
------------- ---------- ------------- --------------- ----------
Raphaely           11000            30            2900 .166666667
Khoo                3100            30            2900 .333333333
Baida               2900            30            2900         .5
Tobias              2800            30            2900 .666666667
Himuro              2600            30            2900 .833333333
Colmenares          2500            30            2900          1
Hunold              9000            60            4800         .2
Ernst               6000            60            4800         .4
Austin              4800            60            4800         .8
Pataballa           4800            60            4800         .8
Lorentz             4200            60            4800          1

부서 30에서 대응하는 백분위(Cume_Dist)가 0.5이상중에서 최소값을 가지는 중앙값은 2900이다.

부서 60에서 대응하는 백분위(Cume_Dist)가 0.5이상중에서 최소값을 가지는 중앙값은 4800이다.


RANK

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

RANK

집계 문법

rank_aggregate::=
Description of rank_aggregate.gif follows

그림 설명

분석 문법

rank_analytic::=
Description of rank_analytic.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

RANK함수는 값의 그룹에서 값의 순위를 계산한다. 반환되는 데이터형은 NUMBER이다.

같은 순위를 가지는 순위 기준에 대해서는 같은 값을 가진다. 오라클 데이터베이스는 동일한 행에 대해 동일한 순위를 더하고, 다음의 순위를 계산한다. 그런 이유로 RANK가 연속하지 않는 숫자일수 있다. 이 함수는 top-N과 bottom-N 리포팅에 유용하다.

  • 집계 함수로써 RANK함수는 주어진 소트 지정에 따라서 함수의 인수에 의해 식별된 불확실한 행의 순위를 측정한다.함수의 인수는 각 그룹내의 단일 행을 식별하기 위해서, 각 집계 그룹내의 상수 표현은 평가될 필요가 있다. 상수 인수식 과 집계의 ORDER BY구문의 식의 위치는 일치한다. 그르므로, 인수의 수는 같아야 하고, 그 형태는 호환되어야한다.

  • 분석 함수로써 RANK함수는 order_by_clause에서 value_exprs의 값에 근거하여서, 쿼리에 의해 반환되는 다른 여러 행들에 대해서 쿼리로부터 반환되는 각 행의 순위를 계산한다.

집계 예제

다음 예제는 hr.employees테이블에서 급여가 $15,500이고, 수수료가 5%인 불확정한 종업원의 순위를 계산한다.

SELECT RANK(15500, .05) WITHIN GROUP
   (ORDER BY salary, commission_pct) "Rank"
   FROM employees;

      Rank
----------
       105

유사하게, 종업원의 급여사이에 급여가 %15,500인 종업원의 순위를 반환한다.

SELECT RANK(15500) WITHIN GROUP
   (ORDER BY salary DESC) "Rank of 15500"
   FROM employees;

Rank of 15500
--------------
             4

분석 예제

다음 예제는 급여와 수수료에 근거하여 부서 80에서 종업원의 순위를 계산한다. 동일한 급여에 대해 동일 순위가 부여된다. DENSE_RANK 참조.

SELECT department_id, last_name, salary, commission_pct,
   RANK() OVER (PARTITION BY department_id
   ORDER BY salary DESC, commission_pct) "Rank"
   FROM employees WHERE department_id = 80;

DEPARTMENT_ID LAST_NAME                     SALARY COMMISSION_PCT       Rank
------------- ------------------------- ---------- -------------- ----------
           80 Russell                        14000             .4          1
           80 Partners                       13500             .3          2
           80 Errazuriz                      12000             .3          3
           80 Ozer                           11500            .25          4
           80 Cambrault                      11000             .3          5
           80 Abel                           11000             .3          5
           80 Zlotkey                        10500             .2          7
           80 Vishney                        10500            .25          8
           80 Bloom                          10000             .2          9
           80 Tucker                         10000             .3         10
           80 King                           10000            .35         11
           80 Fox                             9600             .2         12
           80 Greene                          9500            .15         13
           80 Bernstein                       9500            .25         14
           80 Sully                           9500            .35         15
           80 Hall                            9000            .25         16
           80 McEwen                          9000            .35         17
           80 Hutton                          8800            .25         18
           80 Taylor                          8600             .2         19
           80 Livingston                      8400             .2         20
           80 Olsen                           8000             .2         21
           80 Smith                           8000             .3         22
           80 Cambrault                       7500             .2         23
           80 Doran                           7500             .3         24
           80 Smith                           7400            .15         25
           80 Bates                           7300            .15         26
           80 Marvins                         7200             .1         27
           80 Tuvault                         7000            .15         28
           80 Sewall                          7000            .25         29
           80 Lee                             6800             .1         30
           80 Ande                            6400             .1         31
           80 Banda                           6200             .1         32
           80 Johnson                         6200             .1         32
           80 Kumar                           6100             .1         34


REGR_ (Linear Regression) Functions

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REGR_ (Linear Regression) Functions

선형 회귀 함수는

  • REGR_SLOPE

  • REGR_INTERCEPT

  • REGR_COUNT

  • REGR_R2

  • REGR_AVGX

  • REGR_AVGY

  • REGR_SXX

  • REGR_SYY

  • REGR_SXY

문법

linear_regr::=
Description of linear_regr.gif follows

그림 설명

목적
  • REGR_INTERCEPT : 회귀직선의 절편 계산
  • REGR_SLOPE(Y, X) : 회귀직선의 기울기 계산
  • REGR_SXX, REGR_SXY, REGR_SYY : Sxx, Sxy, Syy 제곱합
  • REGR_COUNT : 회귀선 적합에 사용되는 수 ,회귀선에 일치하는 null이 아닌 쌍의 개수, 회귀선상에 찍히는 값들의 숫자를 구해준다
  • REGR_R2 : 결정계수 (R-Square)
  • REGR_AVGX : X의 평균
  • REGR_AVGY : Y의 평균
  • 기타 :: F검정통계량, T 통계량, 자유도

선형회귀함수는 정규 최소 제곱 회귀 선상을 수치 쌍의 세트에 적합한다. 집계함수와 분석함수로 이용할수 있다.

이러한 함수는 인수로써 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비수치 데이터형을 취한다. 오라클은 수치 우선 순위가 가장 높은 인수를 판단하여 나머지 인수를 암묵적으로 그 데이터형으로 변환하고, 그 데이터형을 반환한다.

오라클은 expr1 또는 expr2이 NULL인 모든 쌍을 제거한후에 (expr1,expr2)을 함수에 적용한다. 오라클은 데이터를 통해 single pass중에 동시에 모든 회귀 함수를 계산한다.

expr1은 종속변수(y 값)의 값으로 해석되고, expr2은 독립변수의 값(x값)으로 해석 된다.

  • REGR_SLOPE은 직선의 기울기를 반환한다. 반환값은 수치 데이터형이고, NULL일수 있다. NULL(expr1,expr2)쌍을 제거후에, 다음 계산을 한다.

    COVAR_POP(expr1, expr2) / VAR_POP(expr2)

  • REGR_INTERCEPT은 회귀 선의 y-절편을 반환한다. 반환값은 수치데이터형으로, NULL일수 있다. NULL(expr1,expr2)쌍을 제거후에, 다음 계산을 한다.

    AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2)

  • REGR_COUNT은 회귀 직선을 적합하기 위해 이용되는 Non-Null 쌍의 수치 정수를 반환한다.

REGR_R2(은)는, 회귀에 대한 결정계수(R의 2승 또는 적합도라고도 부른다)를 되돌립니다.반환값은 수치 데이터형으로, NULL가 되는 경우도 있습니다.VAR_POP (expr1) 및VAR_POP (expr2)은, NULL의 조가 배제된 후에 평가됩니다.반환값은 다음과 같습니다.

  • REGR_R2은 회귀에 대한 결정계수(R-squared 또는 적합도)를 반환한다. 반환값은 수치 데이터형 또는 NULL일수 있다. VAR_POP(expr1)과 VAR_POP(expr2)는 NULL 쌍 제거후에 평가된다. 반환되는 값은 아래와 같다.

                         NULL if VAR_POP(expr2)  = 0

                        1 if VAR_POP(expr1)  = 0 and
                             VAR_POP(expr2) != 0

POWER(CORR(expr1,expr),2) if VAR_POP(expr1)  > 0 and
                             VAR_POP(expr2  != 0
    이외의 모든 회귀 함수는 수치 데이터형과 NULL을 반환할수 있다.

    REGR_AVGX(은)는, 회귀 직선의 독립변수(expr2)의 평균을 요구합니다.
    NULL (expr1,expr2)의 조를 배제한 후, 이 펑션은 다음의 계산을 실시합니다.

  • REGR_AVGX는 회귀 직선의 독립변수(expr2)의 평균을 평가한다.NULL(expr1,expr2) 쌍을 제거한후에 다음을 계산한다.

    AVG(expr2)

  • REGR_AVGY는 회귀 직선의 종속변수(expr1)의 평균을 평가한다.NULL(expr1,expr2) 쌍을 제거한후에 다음을 계산한다.

    AVG(expr1)

REGR_SXY, REGR_SXX, REGR_SYY는 여러 진단 통계를 계산하기 위해 이용되는 보조 함수이다.

  • REGR_SXX는 NULL(expr1,expr2)쌍을 제거후에 다음을 계산한다.

    REGR_COUNT(expr1, expr2) * VAR_POP(expr2)

  • REGR_SYY는 NULL(expr1,expr2)쌍을 제거후에 다음을 계산한다.

    REGR_COUNT(expr1, expr2) * VAR_POP(expr1)

  • REGR_SXY는 NULL(expr1,expr2)쌍을 제거후에 다음을 계산한다.

    REGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2)

다음 예제는 샘플 테이블 sh.sales와 sh.products에 근거한다.

일반화 선형 회귀 예제

다음 예제는 다양한 선형 회귀 함수의 비교를 제공한다.

SELECT s.channel_id,
       REGR_SLOPE(s.quantity_sold, p.prod_list_price)     SLOPE   ,
       REGR_INTERCEPT(s.quantity_sold, p.prod_list_price) INTCPT  ,
       REGR_R2(s.quantity_sold, p.prod_list_price)        RSQR    ,
       REGR_COUNT(s.quantity_sold, p.prod_list_price)     COUNT   ,
       REGR_AVGX(s.quantity_sold, p.prod_list_price)      AVGLISTP,
       REGR_AVGY(s.quantity_sold, p.prod_list_price)      AVGQSOLD
FROM   sales s, products p
WHERE  s.prod_id=p.prod_id   AND
       p.prod_category='Men' AND
       s.time_id=to_DATE('10-OCT-2000')
GROUP BY s.channel_id;

C      SLOPE     INTCPT       RSQR      COUNT   AVGLISTP   AVGQSOLD
- ---------- ---------- ---------- ---------- ---------- ----------
C -.03529838 16.4548382 .217277422         17 87.8764706 13.3529412
I  -.0108044 13.3082392 .028398018         43  116.77907 12.0465116
P -.01729665 11.3634927 .026191191         33 80.5818182 9.96969697
S -.01277499  13.488506 .000473089         71  52.571831 12.8169014
T -.01026734 5.01019929 .064283727         21       75.2 4.23809524

REGR_SLOPE and REGR_INTERCEPT 예제

다음 예제는 판매 양과 각 회계 년도에 대한 판매 순이익에 대한 회귀 직선의 기울기와 절편을 계산한다.

SELECT t.fiscal_year,
       REGR_SLOPE(s.amount_sold, s.quantity_sold) "Slope",
       REGR_INTERCEPT(s.amount_sold, s.quantity_sold) "Intercept"
FROM sales s, times t
WHERE s.time_id = t.time_id
GROUP BY t.fiscal_year;

FISCAL_YEAR      Slope  Intercept
----------- ---------- ----------
       1998 49.3934247 71.6015479
       1999 49.3443482 70.1502601
       2000 49.2262135 75.0287476

다음 예제는 amount_sold와 quantity_sold에 대한 회귀 직선의 누적 기울기와 누적 절편을 계산한다.

SELECT t.fiscal_month_number "Month", t.day_number_in_month "Day",
       REGR_SLOPE(s.amount_sold, s.quantity_sold)
            OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month) AS CUM_SLOPE,
       REGR_INTERCEPT(s.amount_sold, s.quantity_sold)
            OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month) AS CUM_ICPT
FROM sales s, times t
WHERE s.time_id = t.time_id
  AND s.prod_id IN (270, 260)
  AND t.fiscal_year=1998
  AND t.fiscal_week_number IN (50, 51, 52)
  AND t.day_number_in_week IN (6,7)
ORDER BY t.fiscal_month_desc, t.day_number_in_month;

Month        Day  CUM_SLOPE   CUM_ICPT
---------- ---------- ---------- ----------
        12         12        -68       1872
        12         12        -68       1872
        12         13 -20.244898 1254.36735
        12         13 -20.244898 1254.36735
        12         19 -18.826087       1287
        12         20 62.4561404  125.28655
        12         20 62.4561404  125.28655
        12         20 62.4561404  125.28655
        12         20 62.4561404  125.28655
        12         26 67.2658228 58.9712313
        12         26 67.2658228 58.9712313
        12         27 37.5245541 284.958221
        12         27 37.5245541 284.958221
        12         27 37.5245541 284.958221

REGR_COUNT 예제

다음 예제는 회계 담당자를 가지는 고객 테이블(319 총계 밖에)에서 고객의 수를 반환한다.

SELECT REGR_COUNT(customer_id, account_mgr_id) FROM customers;

REGR_COUNT(CUSTOMER_ID,ACCOUNT_MGR_ID)
--------------------------------------
                                   231

다음 예제는 1998년 4월의 각 해당일의 거래의 누적 수를 계산한다.

SELECT UNIQUE t.day_number_in_month,
       REGR_COUNT(s.amount_sold, s.quantity_sold)
            OVER (PARTITION BY t.fiscal_month_number
            ORDER BY t.day_number_in_month) "Regr_Count"
FROM   sales s, times t
WHERE  s.time_id = t.time_id
AND    t.fiscal_year = 1998 AND t.fiscal_month_number = 4;

DAY_NUMBER_IN_MONTH Regr_Count
------------------- ----------
                  1        825
                  2       1650
                  3       2475
                  4       3300
. . .
                 26      21450
                 30      22200

REGR_R2 예제

다음 예제는 amount_sold와 quantity_sold의 회귀 직선의 결정 계수를 계산한다.

SELECT REGR_R2(amount_sold, quantity_sold) FROM sales
WHERE amount_sold > 5000;

REGR_R2(AMOUNT_SOLD,QUANTITY_SOLD)
----------------------------------
                        .024087453

다음 예제는 1998년동안에 각 월에 대한 amount_sold와 quantity_sold에 대한 회귀 직선의 누적 결정계수를 계산한다.

SELECT t.fiscal_month_number,
       REGR_R2(SUM(s.amount_sold), SUM(s.quantity_sold))
            OVER (ORDER BY t.fiscal_month_number) "Regr_R2"
FROM sales s, times t
WHERE s.time_id = t.time_id
  AND t.fiscal_year = 1998
GROUP BY t.fiscal_month_number
ORDER BY t.fiscal_month_number;

FISCAL_MONTH_NUMBER    Regr_R2
------------------- ----------
                  1
                  2          1
                  3 .927372984
                  4 .807019972
                  5 .932745567
                  6  .94682861
                  7 .965342011
                  8 .955768075
                  9 .959542618
                 10 .938618575
                 11 .880931415
                 12 .882769189

REGR_AVGY and REGR_AVGX 예제

다음 예제는 각 해에 대한 amount_sold와 quantity_sold에 대한 회귀 평균을 계산한다.

SELECT t.fiscal_year,
       REGR_AVGY(s.amount_sold, s.quantity_sold) "Regr_AvgY",
       REGR_AVGX(s.amount_sold, s.quantity_sold) "Regr_AvgX"
FROM   sales s, times t
WHERE  s.time_id = t.time_id
GROUP BY t.fiscal_year;

FISCAL_YEAR  Regr_AvgY  Regr_AvgX
----------- ---------- ----------
       1998 716.602044 13.0584283
       1999 714.910831 13.0665536
       2000 717.331304 13.0479781

다음 에제는 amount_sold와 quantity_sold에 대한 누적 평균을 계산한다.

SELECT t.day_number_in_month,
       REGR_AVGY(s.amount_sold, s.quantity_sold)
            OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month) "Regr_AvgY",
       REGR_AVGX(s.amount_sold, s.quantity_sold)
            OVER (ORDER BY t.fiscal_month_desc, t.day_number_in_month) "Regr_AvgX"
FROM   sales s, times t
WHERE  s.time_id = t.time_id
  AND  s.prod_id = 260
  AND  t.fiscal_month_desc = '1998-12'
  AND  t.fiscal_week_number IN (51, 52)
ORDER BY t.day_number_in_month;

DAY_NUMBER_IN_MONTH  Regr_AvgY  Regr_AvgX
------------------- ---------- ----------
                 14        882       24.5
                 14        882       24.5
                 15        801      22.25
                 15        801      22.25
                 16      777.6       21.6
                 18 642.857143 17.8571429
                 18 642.857143 17.8571429
                 20      589.5     16.375
                 21        544 15.1111111
                 22 592.363636 16.4545455
                 22 592.363636 16.4545455
                 24 553.846154 15.3846154
                 24 553.846154 15.3846154
                 26        522       14.5
                 27      578.4 16.0666667

REGR_SXY, REGR_SXX, and REGR_SYY 예제

다음 예제는 샘플 sh.sales 테이블에서 각 해에 대한 amount_sold와 quantity_sold에 대한 REGR_SXY,REGR_SXX,REGR_SYY를 계산한다.

SELECT t.fiscal_year,
       REGR_SXY(s.amount_sold, s.quantity_sold) "Regr_sxy",
       REGR_SYY(s.amount_sold, s.quantity_sold) "Regr_syy",
       REGR_SXX(s.amount_sold, s.quantity_sold) "Regr_sxx"
FROM   sales s, times t
WHERE  s.time_id = t.time_id
GROUP BY t.fiscal_year;

FISCAL_YEAR   Regr_sxy   Regr_syy   Regr_sxx
----------- ---------- ---------- ----------
       1998 1620591607 2.3328E+11 32809865.2
       1999 1955866724 2.7695E+11 39637097.2
       2000 2127877398 3.0630E+11 43226509.7

다음 예제는 amount_sold와 quantity_sold에 대한 누적 REGR_SXY,REGR_SXX,REGR_SYY를 계산한다.

SELECT t.day_number_in_month,
       REGR_SXY(s.amount_sold, s.quantity_sold)
            OVER (ORDER BY t.fiscal_year, t.fiscal_month_desc) "Regr_sxy",
       REGR_SYY(s.amount_sold, s.quantity_sold)
            OVER (ORDER BY t.fiscal_year, t.fiscal_month_desc) "Regr_syy",
       REGR_SXX(s.amount_sold, s.quantity_sold)
            OVER (ORDER BY t.fiscal_year, t.fiscal_month_desc) "Regr_sxx"
FROM   sales s, times t
WHERE  s.time_id = t.time_id
  AND  prod_id IN (270, 260)
  AND  t.fiscal_month_desc = '1998-02'
  AND  t.day_number_in_week IN (6,7)
ORDER BY t.day_number_in_month;

DAY_NUMBER_IN_MONTH   Regr_sxy   Regr_syy   Regr_sxx
------------------- ---------- ---------- ----------
                  1  130973783 1.8916E+10 2577797.94
. . .
                 30  130973783 1.8916E+10 2577797.94


STATS_BINOMIAL_TEST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_BINOMIAL_TEST

문법

stats_binomial_test::=
Description of stats_binomial_test.gif follows

그림 설명

목적

STATS_BINOMIAL_TEST함수는 단지 두개의 유효한 값이 존재하는 이분 변수(두개의 배타적인 값을 가지는 변수)에 대해서 이용되는 정확 확률 테스트이다. 표본 비율과 주어진 비율 사이의 차이를 검정한다. 이 검정에서는 표본 크기가 작은 경우 이용된다.

이 함수는 4개의 인수를 취한다.

expr1은 시험을 위한 표본이다.

expr2은 비율이 기대 되는 값이나 p는 테스트의 기준이 되는 비율을 가진다.

4번째 인수는 VARCHAR2 형태를 반환되는 값이다. 만약 4번째 인수를 생략하면, 기본값은 TWO_SIDED_PROB이다. 반환되는 값의 의미는 아래와 같다.

Table 7-3 STATS_BINOMIAL Return Values

Return Value | Meaning
TWO_SIDED_PROB | 지정된 모집단의 비율 P가 관측된 비율 또는 더 극단치가 될 확률.
EXACT_PROB | 지정된 모집단의 비율 P가 관측된 비율과 정확하게 같이 되는 확률
ONE_SIDED_PROB_OR_MORE | 지정된 모집단의 비율 P가 관측된 비율 이상이 되는 확률
ONE_SIDED_PROB_OR_LESS | 지정된 모집단의 비율 P가 관측된 비율 이하가 되는 확률

EXACT_PROB는 정확하게 비율 p의 확률이 주어진다. 표본에서 비율이 50-50 분할과  유의적으로 차이가 있는지 통상적으로 p를 0.50으로 설정한다. 만약 비율이 다를 경우 테스트를 원한다면, 반환값 TWO_SIDED_PROB를 이용한다. 만약 비율이 expr2의 값보다 더 큰지 테스트를 원한다면, 반환값 ONE_SIDED_PROB_OR_MORE를 사용한다. 만약 비율이 expr2의 값보다 작은지 테스트를 원한다면, 반환값 ONE_SIDED_PROB_OR_LESS를 사용한다.

STATS_BINOMIAL_TEST 예제

다음 예제는 모집단의 69%가 남성이라고 가정하에 관측된 남성의 수와 정확하게 동일하게 일치되는 확률을 판단한다.

SELECT AVG(DECODE(cust_gender, 'M', 1, 0)) real_proportion,
       STATS_BINOMIAL_TEST
         (cust_gender, 'M', 0.68, 'EXACT_PROB') exact,
       STATS_BINOMIAL_TEST
         (cust_gender, 'M', 0.68, 'ONE_SIDED_PROB_OR_LESS') prob_or_less
  FROM sh.customers;


STATS_CROSSTAB

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_CROSSTAB

문법

stats_crosstab::=
Description of stats_crosstab.gif follows

그림 설명

목적

교차분석(crosstab)은 두개의 명목 변수를 분석하는 방법이다. STATS_CROSSTAB함수는 3개 인수, 2개 인수를 취하고, VARCHAR2타입의 값을 반환한다. expr1과 expr2는 분석되는 2개의 변수이다. 이 함수는 3번째 인수의 값에 의해 정의 되는 1개의 수치를 반환한다. 만약 3번째 인수를 생략하면, 기본은 CHISQ_SIG이다. 반환되는 값의 의미는 아래 참조.

Table 7-4 STATS_CROSSTAB Return Values

Return Value | Meaning
CHISQ_OBS | chi-squared의 관측치 값
CHISQ_SIG | 관측된 chi-squared의 유의성
CHISQ_DF | chi-squared에 대한 자유도
PHI_COEFFICIENT | 파이 계수
CRAMERS_V | Cramer's V 통계량
CONT_COEFFICIENT | Contingency coefficient
COHENS_K | Cohen's kappa

STATS_CROSSTAB 예제

다음 예제는 성별과 수입 수준 사이의 연관된 힘을 정의한다.

SELECT STATS_CROSSTAB(cust_gender, cust_income_level, 'CHISQ_OBS') chi_squared,
       STATS_CROSSTAB(cust_gender, cust_income_level, 'CHISQ_SIG') p_value,
       STATS_CROSSTAB(cust_gender, cust_income_level, 'PHI_COEFFICIENT') phi_coefficient
FROM sh.customers;

CHI_SQUARED    P_VALUE PHI_COEFFICIENT
----------- ---------- ---------------
 251.690705 1.2364E-47      .067367056


STATS_F_TEST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_F_TEST

문법

stats_f_test::=
Description of stats_f_test.gif follows

그림 설명

목적

STATS_F_TEST함수는 두개의 분산이 유의한 차가 있는지 테스트한다. f의 관측된 값은 다른 분산에 대한 한쪽의 분산 비율이다. 그래서, 이 값은 1과 매우 다른 것은 일반적으로 유의한 차가 있는 것을 나타낸다.

이 한수는 3개의 인수를 취한다. expr1은 그룹변수 또는 독립변수, epxr2는 값의 표본이다. 이 함수는 3번째 인수의 값의 정의에 의하여, 하나의 값을 반환한다. 만약 3번째 인수를 생략하면, 기본적으로 TWO_SIDED_SIG를 설정한다. 반환된 값의 의미는 아래표 참조.

Table 7-5 STATS_F_TEST Return Values

Return Value | Meaning
STATISTIC | f 의 관측된 값.
DF_NUM | 분자의 자유도
DF_DEN | 분모의 자유도
ONE_SIDED_SIG | f의 한쪽 유의성
TWO_SIDED_SIG | f의 양쪽 유의성

f의 관측된 값은 두번째 그룹에 대한 한쪽 그룹 분산의 비율이다. f의 관측된 값의 유의성은 분산이 우연히 다를 확률이다.(0~1 사이의 수치) 유의성이 작은 값은 2개의 분산에 유의한 차가 있다는 것을 나타낸다. 각 분산의 자유도는 표본의 관측치 수에서 1을 뺀 수이다.

STATS_F_TEST 예제

다음 예제는 남자와 여자 사이의 신용 한도에 분산이 유의한 차가 있는지 판단한다. p_value가 0근처가 아니고, f_statistic가 1에 가까운 결과는 남성과 여성의 신용 한도의 차이가 유의한 의미가 없다는 것을 나타낸다.

SELECT VARIANCE(DECODE(cust_gender, 'M', cust_credit_limit, null)) var_men,
       VARIANCE(DECODE(cust_gender, 'F', cust_credit_limit, null)) var_women,
       STATS_F_TEST(cust_gender, cust_credit_limit, 'STATISTIC') f_statistic,
       STATS_F_TEST(cust_gender, cust_credit_limit) two_sided_p_value
FROM sh.customers;

   VAR_MEN  VAR_WOMEN F_STATISTIC TWO_SIDED_P_VALUE
---------- ---------- ----------- -----------------
12879896.7   13046865  1.01296348        .311928071


STATS_KS_TEST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_KS_TEST

문법

stats_ks_test::=
Description of stats_ks_test.gif follows

그림 설명

목적

STATS_KS_TEST함수는 두개의 표본이 같은 모집단에 속하고 있는지 또는 같은 분포를 가지는 모집단에 속하고 있는지 테스트 하는 Kolmogorov-Smirnov함수이다. 표본의 모집단이 정규분포라는 가정을 하지 않는다.

이 함수는 3개의 인수를 취한다. 2개의 식과 VARCHAR2형태의 반환값을 취한다. expr1은 그룹에서 데이터를 분류한다. expr2는 그룹의 값을 지정한다. 함수는  3번째 인수에 의해 정의되는 값에 따라서 하나의 값을 반환한다. 만약 3번째 인수를 생략하면, 기본값 SIG가 된다.

Table 7-6 STATS_KS_TEST Return Values

Return Value | Meaning
STATISTIC | D 의 관측값
SIG | D 의 유의성

STATS_KS_TEST 예제

Kolmogorov Smirnov 검정을 이용하여서, 다음 예제는 남자와 여성 사이의 판매액의 분포가 우연때문인지 여부를 판단한다.

SELECT stats_ks_test(cust_gender, amount_sold, 'STATISTIC') ks_statistic,
       stats_ks_test(cust_gender, amount_sold) p_value
FROM   sh.customers c, sh.sales s
WHERE  c.cust_id = s.cust_id;

KS_STATISTIC    P_VALUE
------------ ----------
  .003841396 .004080006


STATS_MODE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next
7

STATS_MODE

문법

stats_mode::=
Description of stats_mode.gif follows

그림 설명

목적

STATS_MODE함수는 값의 집합을 인수로 취하여, 가장 큰 빈도를 가지는 값을 반환한다. 오라클 데이터 베이스는 1개의 최대 빈도값을 선택하여 반환한다.

복수의 빈도를 획득하기 위하여(만약 복수 빈도가 존재하면), 불확정적인 쿼리에서 처럼 다른 함수의 조합을 이용해야한다.

SELECT x FROM (SELECT x, COUNT(x) AS cnt1
               FROM t GROUP BY x)
               WHERE cnt1 = (SELECT MAX(cnt2) FROM (SELECT COUNT(x) AS cnt2 FROM t GROUP BY x));

예제

다음 예제는 hr.employees 테이블에서 부서마다 급여의 최대 빈도를 반환한다.

SELECT department_id, STATS_MODE(salary) FROM employees
GROUP BY department_id;

DEPARTMENT_ID STATS_MODE(SALARY)
------------- ------------------
           10               4400
           20               6000
           30               2500
           40               6500
           50               2500
           60               4800
           70              10000
           80               9500
           90              17000
          100               6900
          110               8300
                            7000

만약 최대 빈도의 모든 값을 취할 필요가 있다면, 다음 예제 처럼 다른 함수의 조합을 이용해야한다.

SELECT commission_pct FROM
     (SELECT commission_pct, COUNT(commission_pct) AS cnt1 FROM employees
      GROUP BY commission_pct)
      WHERE cnt1 = (SELECT MAX (cnt2) FROM (SELECT COUNT(commission_pct) AS cnt2
                                            FROM employees GROUP BY commission_pct));

COMMISSION_PCT
--------------
            .2
            .3


STATS_MW_TEST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_MW_TEST

문법

stats_mw_test::=
Description of stats_mw_test.gif follows

그림 설명

목적

A Mann Whitney test는 2개의 독립 표본을 비교한다.

귀무가설 : 두 모집단은 같은 분포함수를 가진다. 대립가설 : 두 분포 함수는 다르다.

STATS_MW_TEST는 STATS_T_TEST_* 함수처럼 표본간의 차이가 정규분포라는 가정을 하지 않는다. 이 함수는 3개의 인수를 취하고, VARCHAR2 타입의 값을 반환한다. expr1은 그룹에서 데이터를 구분한다. expr2는 그룹의 값을 지정한다. 함수는 3번째 인수에 의해 정의되는 값에 따라 하나의 값을 반환한다. 만약 세번째 인수를 생략하면, 기본적으로 TWO_SIDED_SIG가 된다.

Table 7-7 STATS_MW_TEST Return Values

Return Value | Meaning
STATISTIC | Z 의 관측값.
U_STATISTIC | U 의 관측값.
ONE_SIDED_SIG | Z 의 한쪽 유의성
TWO_SIDED_SIG | Z 의 양측 유의성

STATS_MW_TEST함수는 값의 순위의 합계에 있어서 차이를 확인하여서, 표본이 같은 분포인지의 확률을 계산한다. 만약 표본이 같은 분포에 있다면, 각 표본의 합계치는 가깝게 된다.

STATS_MW_TEST 예제

Mann Whitney 검정을 이용하여서, 다음 예제는 남성과 여성 사이의 분포의 우연성을 판단한다.

SELECT STATS_MW_TEST(cust_gender, amount_sold, 'STATISTIC') z_statistic,
       STATS_MW_TEST(cust_gender, amount_sold, 'ONE_SIDED_SIG') one_sided_p_value
FROM   sh.customers c, sh.sales s
WHERE  c.cust_id = s.cust_id;

Z_STATISTIC ONE_SIDED_P_VALUE
----------- -----------------
 -1.4011509        .080584471


STATS_ONE_WAY_ANOVA

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_ONE_WAY_ANOVA

문법

stats_one_way_anova::=
Description of stats_one_way_anova.gif follows

그림 설명

목적

일원분산분석 함수(STATS_ONE_WAY_ANOVA)는 분산의 다른 2개 추정치 비교에 의해 통계적 유의성에 대한 평균(그룹 또는 변수에 대한)의 유의한 차를 검증한다. 첫번째 추정치는 각 그룹 또는 카테고리내의 분산에 근거한다. 이것은 그룹내 평균 제곱 또는 평균제곱오차로 알려졌다. 다른 추정치는 그룹의 평균 사이의 분산에 근거한다. 이것은 그룹간 평균 제곱으로 알려졌다. 만약 그룹의 평균이 유의한 차이가 있다면, 그룹간 평균 제곱은 기대값보다 커져서 그룹간 평균 제곱과 일치하지 않는다. 만약 그룹의 평균 제곱이 일치하면, 두개의 분산 추정치는 거의 같다.

STATS_ONE_WAY_ANOVA함수는 3개의 인수를 취한다. 두개의 식과 VARCHAR2 타입의 반환값을 취한다. expr1은 독립변수 또는 그룹 집합에서 데이터를 분할하는 그룹핑 변수이다. expr2는 그룹의 각 멤버에 상응하는 값을 포함한 종속 변수(수치표현)이다. 함수는 3번째 인수의 값에 의해 정의에 따라 하나의 수치를 반환한다. 만약 3번째 인수를 생략하면, 기본값은 SIG이다. 반환값의 의미는 Table 7-8 참조.

표 7-8 STATS_ONE_WAY_ANOVA 반환값

Return Value | Meaning
SUM_SQUARES_BETEEN | 그룹간 제곱합 (Sum of squares between groups)
SUM_SQUARES_WITHIN | 그룹내의 제곱합(Sum of squares within groups)
DF_BETWEEN | 그룹간 자유도(Degree of freedom for between groups)
DF_WITHIN | 그룹내 자유도(Degree of freedom for within groups)
MEAN_SQUARES_BETWEEN | 그룹간 평균 제곱(Mean squares between groups)
MEAN_SQUARES_WITHIN | 그룹내 평균 제곱(Mean squares within groups)
F_RATIO | 그룹내 평균 제곱 사이의 평균 제곱의 비율(Ratio of the mean squares between to the mean squares within (MSB/MSW))
SIG | 유의성(Significance)

일원분산분석의 유의성은 그룹간 평균 제곱과 그룹내 평균 제곱의 비율에 대한 f검정의 한쪽꼬리 유의성이 통용되는 것에 의해 판단된다. f검정은 한쪽 꼬리 유의성이 이용될 필요가 있는데, 그 이유는 그룹간 평균 제곱은 그룹내 평균 제곱 이상에서만 될수 있기 때문이다. 그러므로, STATS_ONE_WAY_ANOVA에 의해 반환되는 유의성은, 그룹간 차이가 우연에 의해 발생할 확률(0과 1사이의 수자)확률이다. 이 수치가 작으면, 그룹간 차이의 유의성이 더 커진다. f검정 실행의 정보는 STATS_F_TEST 참조.

STATS_ONE_WAY_ANOVA 예제

다음 예제는 수입 수준내에서 평균 판매 차이와 수입 수준간에서 평균 판매 차이의 유의성을 검증한다. P_value가 0에 가까운 결과는 남성과 여성에 대하여 서로 다른 소득 수준에 대한 상품 판매 금액의 차이는 유의하다.

SELECT cust_gender,
       STATS_ONE_WAY_ANOVA(cust_income_level, amount_sold, 'F_RATIO') f_ratio,
       STATS_ONE_WAY_ANOVA(cust_income_level, amount_sold, 'SIG') p_value
FROM sh.customers c, sh.sales s
WHERE c.cust_id = s.cust_id
GROUP BY cust_gender;

C    F_RATIO    P_VALUE
- ---------- ----------
F 5.59536943 4.7840E-09
M  9.2865001 6.7139E-17


STATS_T_TEST_*

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_T_TEST_*

The t-test functions are:

  • STATS_T_TEST_ONE: 일표본 t검정

  • STATS_T_TEST_PAIRED: 이표본 대응 t검정(crossed t-test로 알려짐.)

  • STATS_T_TEST_INDEP: 같은 분산을 가지는 2개 독립 그룹의 t검정(합동분산)

  • STATS_T_TEST_INDEPU: 다른 분산을 가지는 2개 독립 그룹의 t검정(비합동분산)

문법

stats_t_test::=
Description of stats_t_test.gif follows
Description of the illustration stats_t_test.gif

목적

t검정은 평균의 차이의 유의성을 측정한다. 2개 그룹의 평균과 상수값을 가지는 한 개 그룹의 평균을 비교하는데 이용한다. STATS_T_TEST_*함수는 3개의 인수를 취한다. 2개의 식과 VARCHAR2 타입의 반환값을 취한다. 함수는 세번째 인수의 값에 의해 정의되는 하나의 수자를 반환한다. 만약 3번째 인수를 생략하면, 기본값은 TWO_SIDED_SIG이다. 반환값의 의미는 Table 7-9 참조.

Table 7-9 STATS_T_TEST_* 반환값

Return Value | Meaning
STATISTIC | t 의 관측치값
DF | 자유도
ONE_SIDED_SIG | t의 한쪽 꼬리 유의성
TWO_SIDED_SIG | t의 양쪽 꼬리 유의성

t의 관측값의 유의성은 t의 값이 우연에 의해 획득되는 확률값이다.(0과 1사이의 수자) 이 수치가 작으면, 평균 사이의 유의성은 더 커진다.

자유도는 t의 관측값 결과는 t검정의 타입에 의존한다. 예를들어, 일표본 t검정(STATS_T_TEST_ONE)는, 자유도는 표본에서 관측된 값에서 1을 뺀 값이다.

STATS_T_TEST_ONE

STATS_T_TEST_ONE함수에서, expr1은 표본이고,expr2는 표본 평균과 비교되는 상수 평균이다. 이 함수는 표본 평균과 알려진 평균과의 차이를, 평균의 표준오차로 나눈 t의 값을 획득한다.(STATS_T_TEST_PAIRED에서는, 오히려 평균의 차이의 표준 오차로 나눈다.)

STATS_T_TEST_ONE 예제

다음 예제는 평균 표시 가격과 상수값 60 사이의 차이의 유의성을 정의한다.

SELECT AVG(prod_list_price) group_mean,
       STATS_T_TEST_ONE(prod_list_price, 60, 'STATISTIC') t_observed,
       STATS_T_TEST_ONE(prod_list_price, 60) two_sided_p_value
FROM   sh.products;

GROUP_MEAN T_OBSERVED TWO_SIDED_P_VALUE
---------- ---------- -----------------
139.545556 2.32107746        .023158537

STATS_T_TEST_PAIRED

STATS_T_TEST_PAIRED함수에서는, expr1과 expr2는 평균이 비교되는 2개의 표본이다. 이 함수는 표본 평균사이의 차이를 평균의 차이의 표준오차로 나눈 t의 값을 획득한다.(STATS_T_TEST_ONE에서는 오히려 평균의 표준오차로 나눈다.

STATS_T_TEST_INDEP and STATS_T_TEST_INDEPU

STATS_T_TEST_INDEP와 STATS_T_TEST_INDEPU함수에서는, expr1은 그룹 열이고, expr2는 값의 표본이다. 합동 분산 버젼(STATS_T_TEST_INDEP)는 같은 분산을 가지는 2개의 분포에 대하여 평균이 같은지 또는 다른지를 검증한다. 비합동 분산버젼(STATS_T_TEST_INDEPU)은 만약 2개의 분포가 유의하게 비록 다른 분산을 가졌다고 알려졌지만, 평균이 같은지 다른지를 검증한다.

이 함수를 이용하기 전에, 표본의 분산이 유의한 차이가 있는지 판단하기를 추천한다. 만약 유의한 차가 있다면, 데이터는 다른 모양을 가지는 분포일 가능성이 있어서, 평균의 차이가 유효하지 않은 경유가 있다. 분산의 차이를 판단하기 위해서 f검정을 실행할수 있다. 만약 유의한 차이가 없다면, STATS_T_TEST_INDEP함수를 이용한다. 만약 유의한 차이가 있다면, STATS_T_TEST_INDEPU함수를 이용한다.

STATS_T_TEST_INDEP 예제

다음 예제는 분포가 유사한(합동) 분산을 가진다고 가정되는 남자와 여자에 대한 평균 판매액 사이의 차이의 유의성을 정의한다.

SELECT SUBSTR(cust_income_level, 1, 22) income_level,
       AVG(DECODE(cust_gender, 'M', amount_sold, null)) sold_to_men,
       AVG(DECODE(cust_gender, 'F', amount_sold, null)) sold_to_women,
       STATS_T_TEST_INDEP(cust_gender, amount_sold, 'STATISTIC') t_observed,
       STATS_T_TEST_INDEP(cust_gender, amount_sold) two_sided_p_value
  FROM sh.customers c, sh.sales s
  WHERE c.cust_id = s.cust_id
  GROUP BY ROLLUP(cust_income_level);

INCOME_LEVEL           SOLD_TO_MEN SOLD_TO_WOMEN T_OBSERVED TWO_SIDED_P_VALUE
---------------------- ----------- ------------- ---------- -----------------
A: Below 30,000          105.28349    99.4281447 -1.9880629        .046811482
B: 30,000 - 49,999       102.59651    109.829642 3.04330875        .002341053
C: 50,000 - 69,999      105.627588    110.127931 2.36148671        .018204221
D: 70,000 - 89,999      106.630299     110.47287 2.28496443        .022316997
E: 90,000 - 109,999     103.396741    101.610416 -1.2544577        .209677823
F: 110,000 - 129,999     106.76476    105.981312 -.60444998        .545545304
G: 130,000 - 149,999    108.877532     107.31377 -.85298245        .393671218
H: 150,000 - 169,999    110.987258    107.152191 -1.9062363        .056622983
I: 170,000 - 189,999    102.808238     107.43556 2.18477851        .028908566
J: 190,000 - 249,999    108.040564    115.343356 2.58313425        .009794516
K: 250,000 - 299,999    112.377993    108.196097 -1.4107871        .158316973
L: 300,000 and above    120.970235    112.216342 -2.0642868        .039003862
                        107.121845     113.80441 .686144393        .492670059
                        106.663769    107.276386 1.08013499        .280082357

14 rows selected.

STATS_T_TEST_INDEPU 예제

다음 예제는 분포가 유의한 차이의 분산(비합동분산)을 가졌다고 알려진 남자와 여자에 대한 평균 판매액 사이의 유의성을 정의한다.

SELECT SUBSTR(cust_income_level, 1, 22) income_level,
       AVG(DECODE(cust_gender, 'M', amount_sold, null)) sold_to_men,
       AVG(DECODE(cust_gender, 'F', amount_sold, null)) sold_to_women,
       STATS_T_TEST_INDEPU(cust_gender, amount_sold, 'STATISTIC') t_observed,
       STATS_T_TEST_INDEPU(cust_gender, amount_sold) two_sided_p_value
FROM   sh.customers c, sh.sales s
WHERE  c.cust_id = s.cust_id
GROUP BY ROLLUP(cust_income_level);

INCOME_LEVEL           SOLD_TO_MEN SOLD_TO_WOMEN T_OBSERVED TWO_SIDED_P_VALUE
---------------------- ----------- ------------- ---------- -----------------
A: Below 30,000          105.28349    99.4281447 -2.0542592        .039964704
B: 30,000 - 49,999       102.59651    109.829642 2.96922332        .002987742
C: 50,000 - 69,999      105.627588    110.127931  2.3496854        .018792277
D: 70,000 - 89,999      106.630299     110.47287 2.26839281        .023307831
E: 90,000 - 109,999     103.396741    101.610416 -1.2603509        .207545662
F: 110,000 - 129,999     106.76476    105.981312 -.60580011        .544648553
G: 130,000 - 149,999    108.877532     107.31377 -.85219781        .394107755
H: 150,000 - 169,999    110.987258    107.152191 -1.9451486        .051762624
I: 170,000 - 189,999    102.808238     107.43556 2.14966921        .031587875
J: 190,000 - 249,999    108.040564    115.343356 2.54749867        .010854966
K: 250,000 - 299,999    112.377993    108.196097 -1.4115514        .158091676
L: 300,000 and above    120.970235    112.216342 -2.0726194        .038225611
                        107.121845     113.80441 .689462437        .490595765
                        106.663769    107.276386 1.07853782        .280794207

14 rows selected.


STATS_WSR_TEST

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STATS_WSR_TEST

문법

stats_wsr_test::=
Description of stats_wsr_test.gif follows

그림 설명

목적

STATS_WSR_TEST함수는 대응쌍 표본의 윌콕스 부호 순위 검증을 수행하며, 표본간의 차이가 zero로부터 유의한 차이가 있는지 검정합니다. 차이의 절대값은 순서를 부여하고 순위를 할당한다. 귀무가설은 양의 차이의 순위합이 음의 차이의 순위합과 같다고 놓는다.

이 함수는 3개의 인수를 가진다. expr1과 expr2는 분석대상의 2개 표본으로, 3번째 인수는 VARCHAR2 형태의 반환되는 값이다. 3번째 인수를 지정하지 않는 경우, 기본값은 TWO_SIDED_SIG이다. 반환되는 값의 의미는 표 7-10을 참조.

표 7-10 STATS_WSR_TEST_* 반환 값

Return Value | Meaning
STATISTIC | Z의 관측치
ONE_SIDED_SIG | Z의 한쪽꼬리 유의성
TWO_SIDED_SIG | Z의 양쪽 꼬리 유의성


STDDEV

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STDDEV

문법

stddev::=
Description of stddev.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

STDDEV함수는 Number의 조합인 expr의 표본표준편차를 반환한다. 집계함수와 분석함수로 이용할수있다. STDDEV_SAMP와의 차이점은 입력데이터가 1 행을 가졌을때, STDDEV는 Zero를 반환하고, STDDEV_SAMP는 Null을 반환한다.

오라클 데이터 베이스는 VARIANCE 집계 함수에 대하여 정의된 분산의 제곱근으로써 표준 편차를 계산한다.

이 함수는 임의의 수치형 데이터형 또는 암묵적으로 수치 데이터형으로 변환가능한 데이터형을 취한다. 이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.

만약 DISTINCT를 지정했다면, analytic_clause의 query_partition_clause를 지정할수있다. order_by_clause와 windowing_clause를 허용하지 않는다.

참 조 :

  • "Aggregate Functions ", VARIANCE , and STDDEV_SAMP

  • "About SQL Expressions " for information on valid forms of expr

집계 예제

다음 예제는 hr.employees테이블에서 급여의 표준편차를 반환한다.

SELECT STDDEV(salary) "Deviation"
   FROM employees;

 Deviation
----------
3909.36575

분석 예제

다음 예에서 쿼리는 hire_date 순서로 hr.employees테이블에서 부서 아이디가 30인 곳의 급여의 누적 표준 편차를 계산한다.

SELECT last_name, salary,
       STDDEV(salary) OVER (ORDER BY hire_date) "StdDev"
FROM employees
WHERE department_id = 30;

LAST_NAME                     SALARY     StdDev
------------------------- ---------- ----------
Raphaely                       11000          0 (1개인경우 0을 반환)
Khoo                            3100 5586.14357 (11000,3100의 표준편차)
Tobias                          2800  4650.0896 (11000,3100,2800의 표준편차)
Baida                           2900 4035.26125 (11000,3100,2800,2900의 표준편차)
Himuro                          2600  3649.2465 (11000,3100,2800,2900,2600의 표준편차)
Colmenares                      2500 3362.58829 (11000,3100,2800,2900,2600,2500의 표준편차)


STDDEV_POP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STDDEV_POP

문법

stddev_pop::=
Description of stddev_pop.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

STDDEV_POP함수는 모집단 표준 편차를 계산하고, 모집단 분산의 제곱근값을 반환한다. 집계함수와 분석 함수로 이용할수 있다.

이 함수는 임의의 수치형 데이터형 또는 암묵적으로 수치 데이터형으로 변환가능한 데이터형을 취한다. 이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.

이 함수는 VAR_POP함수의 제곱근값과 같다. VAR_POP가 Null을 반환할때, 이 함수도 Null을 반환한다.

참 조 :

  • "Aggregate Functions " and VAR_POP

  • "About SQL Expressions " for information on valid forms of expr

집계 예제

다음 예제는 sh.sales 테이블에서 판매액의 모집단과 표본의 표준편차값을 반환한다.

SELECT STDDEV_POP(amount_sold) "Pop",
       STDDEV_SAMP(amount_sold) "Samp"
FROM sales;

       Pop       Samp
---------- ----------
896.355151 896.355592

분석 예제

다음 예제는 hr.employees테이블에서 부서마다 급여의 모집단 표준 편차를 반환한다.

SELECT department_id, last_name, salary,
   STDDEV_POP(salary) OVER (PARTITION BY department_id) AS pop_std
   FROM employees;

DEPARTMENT_ID LAST_NAME                     SALARY    POP_STD
------------- ------------------------- ---------- ----------
           10 Whalen                          4400          0
           20 Hartstein                      13000       3500
           20 Goyal                           6000       3500
. . .
          100 Sciarra                         7700 1644.18166
          100 Urman                           7800 1644.18166
          100 Popp                            6900 1644.18166
          110 Higgens                        12000       1850
          110 Gietz                           8300       1850


STDDEV_SAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

STDDEV_SAMP

문법

stddev_samp::=
Description of stddev_samp.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

STDDEV_SAMP함수는 누적 표본 표준편차를 계산하고, 표본 분산의 제곱근값을 반환한다. 집계함수, 분석함수로 이용할수 있다.

이 함수는 임의의 수치형 데이터형 또는 암묵적으로 수치 데이터형으로 변환가능한 데이터형을 취한다. 이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.

이 함수는 VAR_SAMP함수의 제곱근값과 같다. VAR_SAMP가 Null을 반환할때, 이 함수도 Null을 반환한다.

참 조 :

  • "Aggregate Functions " and VAR_SAMP

  • "About SQL Expressions " for information on valid forms of expr

집계 예제

STDDEV_POP 함수를 참조하세요 .

분석 예제

다음 예제는 employees 테이블에서 부서마다 급여의 표본 표준편차를 반환한다.

SELECT department_id, last_name, hire_date, salary,
   STDDEV_SAMP(salary) OVER (PARTITION BY department_id
      ORDER BY hire_date
      ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_sdev
   FROM employees;

DEPARTMENT_ID LAST_NAME       HIRE_DATE     SALARY   CUM_SDEV
------------- --------------- --------- ---------- ----------
           10 Whalen          17-SEP-87       4400
           20 Hartstein       17-FEB-96      13000
           20 Goyal           17-AUG-97       6000 4949.74747
           30 Raphaely        07-DEC-94      11000
           30 Khoo            18-MAY-95       3100 5586.14357
           30 Tobias          24-JUL-97       2800  4650.0896
           30 Baida           24-DEC-97       2900 4035.26125
. . .
          100 Chen            28-SEP-97       8200 2003.33056
          100 Sciarra         30-SEP-97       7700 1925.91969
          100 Urman           07-MAR-98       7800 1785.49713
          100 Popp            07-DEC-99       6900 1801.11077
          110 Higgens         07-JUN-94      12000
          110 Gietz           07-JUN-94       8300 2616.29509


SUM

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

SUM

문법

sum::=
Description of sum.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

SUM함수는 expr의 값의 합을 반환한다. 집계함수 또는 분석함수로 사용할수 있다.

이 함수는 임의의 수치 데이터 형 또는 암묵적으로 수치 데이터 형으로 변환가능한 임의의 비수치 데이터형을 취힌다. 이 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.

만약 DISTINCT를 지정했다면, analytic_clause 의 query_partition_clause 을 지정할수 있다. 그러나, order_by_clause 과 windowing_clause 은 허용하지 않는다.

집계 예제

다음 예제는 HR.employees테이블에서 모든 급여의 합계를 계산한다.

SELECT SUM(salary) "Total"
     FROM employees;

     Total
----------
    691400

분석 예제

다음 예제는 HR.employees 테이블에서 같은 Manager에 대하여, 현재 급여 이하의 종업원의 급여의 누적 합계를 계산한다. 여기서 Raphaely와 Cambrault는 동일한 급여이기 때문에(논리적으로 같이 취급됨. 급여에 대하여 소트를 하여서 같은 것으로 취급됨),오라클 데이터 베이스는 그들의 급여를 동시에 추가하여, 양쪽 행에 같은 누적 합계를 적용한다.

SELECT manager_id, last_name, salary,
   SUM(salary) OVER (PARTITION BY manager_id ORDER BY salary
   RANGE UNBOUNDED PRECEDING) l_csum
   FROM employees;

MANAGER_ID LAST_NAME           SALARY     L_CSUM
---------- --------------- ---------- ----------
       100 Mourgos               5800       5800
       100 Vollman               6500      12300
       100 Kaufling              7900      20200
       100 Weiss                 8000      28200
       100 Fripp                 8200      36400
       100 Zlotkey              10500      46900
    100 Raphaely             11000      68900
    100 Cambrault            11000      68900
       100 Errazuriz            12000      80900
. . .
       149 Taylor                8600      30200
       149 Hutton                8800      39000
       149 Abel                 11000      50000
       201 Fay                   6000       6000
       205 Gietz                 8300       8300
           King                 24000      24000


VAR_POP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

VAR_POP

문법

var_pop::=
Description of var_pop.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

VAR_POP함수는 이 세트에서 Null값들을 제거한후에 Number 세트의 모집단 분산을 반환한다. 집계함수와 분석 함수를 이용할수 있다.

이 함수는 임의의 수치형 데이터형 또는 암묵적으로 수치형 데이터로 변환가능한 비 수치형 데이터형을 취한다. 이 함수는 인수의 수치형과 같은 데이터 형을 반환한다.

만약 함수가 공백 세트에 적용된다면, Null이 반환된다. 이 함수는 다음과 같이 계산된다.

(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)

참 조 :

"About SQL Expressions " for information on valid forms of expr and "Aggregate Functions "

집계 예제

다음 예제는 employees 테이블에서 급여의 모집단 분산을 반환한다.

SELECT VAR_POP(salary) FROM employees;

VAR_POP(SALARY)
---------------
     15140307.5

분석 예제

다음 예제는 1998년에 월 판매액의 sh.sales 테이블에서 누적 모집단 분산과, 표본 분산을 계산한다.

SELECT t.calendar_month_desc,
   VAR_POP(SUM(s.amount_sold))
      OVER (ORDER BY t.calendar_month_desc) "Var_Pop",
   VAR_SAMP(SUM(s.amount_sold))
      OVER (ORDER BY t.calendar_month_desc) "Var_Samp"
  FROM sales s, times t
  WHERE s.time_id = t.time_id AND t.calendar_year = 1998
  GROUP BY t.calendar_month_desc;

CALENDAR    Var_Pop   Var_Samp
-------- ---------- ----------
1998-01           0
1998-02  6.1321E+11 1.2264E+12
1998-03  4.7058E+11 7.0587E+11
1998-04  4.6929E+11 6.2572E+11
1998-05  1.5524E+12 1.9405E+12
1998-06  2.3711E+12 2.8453E+12
1998-07  3.7464E+12 4.3708E+12
1998-08  3.7852E+12 4.3260E+12
1998-09  3.5753E+12 4.0222E+12
1998-10  3.4343E+12 3.8159E+12
1998-11  3.4245E+12 3.7669E+12
1998-12  4.8937E+12 5.3386E+12


VAR_SAMP

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

VAR_SAMP

문법

var_samp::=
Description of var_samp.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

VAR_SAMP함수는 이 세트에서 null들을 제거한후에 number의 세트의 표본분산을 반환한다. 집계함수와 분석 함수로 이용가능하다.

이 함수는 임의의 수치형 데이터형 또는 암묵적으로 수치형 데이터로 변환가능한 비 수치형 데이터형을 취한다. 이 함수는 인수의 수치형과 같은 데이터 형을 반환한다.

만약 이 함수는 공백 세트에 적용되면, Null이 반환된다. 이 함수는 다음과 같이 계산된다.

(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / (COUNT(expr) - 1)

이 함수는 VARIANCE함수와 유사하다. 1개의 요소의 입력 세트가 주어졌을때, VARIANCE는 0을, VAR_SAMP는 Null을 반환한다.

참 조 :

"About SQL Expressions " for information on valid forms of expr and "Aggregate Functions "

집계 예제

다음 예제는 employees테이블에서 급여의 표본분산을 계산한다.

SELECT VAR_SAMP(salary) FROM employees;

VAR_SAMP(SALARY)
----------------
      15283140.5

분석 예제

VAR_POP 함수를 참조..


VARIANCE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

VARIANCE

문법

variance::=
Description of variance.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

VARIANCE함수는 expr의 분산을 반환한다.집계함수 또는 분석함수로 이용된다.

오라클 데이터 베이스는 다음과 같이 expr의 분산을 계산한다.

  • 만약 행의 수가 expr=1 인 경우에는 0

  • 만약 행의 수가 expr>1인 경우에는 VAR_SAMP

만약 DISTINCT를 지정했다면, analytic_clause의 query_partition_clause를 지정할수 있다. order_by_clause 과 windowing_clause 은 허용하지 않는다.

이 함수는 인수로써 임의의 수치형 데이터 또는 암묵적으로 수치형 데이터로 변환가능한 비수치형 데이터 타입을 취한다. 이 함수는 인수의 수치형과 같은 데이터형을 반환한다.

집계 예제

다음 예제는 exployees 테이블에서 모든 급여의 분산을 계산한다.

SELECT VARIANCE(salary) "Variance"
   FROM employees;

  Variance
----------
15283140.5

분석 예제

다음 예제는 고용일 순으로 부서아이디 30의 급여의 누적 분산을 반환한다.

SELECT last_name, salary, VARIANCE(salary)
      OVER (ORDER BY hire_date) "Variance"
   FROM employees
   WHERE department_id = 30;

LAST_NAME           SALARY   Variance
--------------- ---------- ----------
Raphaely             11000          0
Khoo                  3100   31205000 (11000,3100의 분산)
Tobias                2800 21623333.3 (11000,3100,2800의 분산)
Baida                 2900 16283333.3 (11000,3100,2800,2900의 분산)
Himuro                2600   13317000 (11000,3100,2800,2900,2600의 분산)
Colmenares            2500   11307000 (11000,3100,2800,2900,2600,2500의 분산)


FIRST_VALUE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

FIRST_VALUE

문법

first_value::=
Description of first_value.gif follows

그림 설명

목적

FIRST_VALUE함수는 분석 함수이다. 값의 정렬된 세트에서 첫번째 값을 반환한다. 만약 집합내에서 첫번째 값이 NULL이라면, IGNORE NULLS를 지정하지 않는한 NULL을 반환한다. 이 설정은 데이터 조밀화에 유용하다. 만약 IGNORE NULLS을 지정하면, FIRST_VALUE함수는 집합 내에서 최초 NON_NULL값을 반환하고, 만약 모든 값이 NULL이라면 NULL을 반환한다. 데이터 조밀화의 예는 "Using Partitioned Outer Joins: Examples" 참조.

expr에 대하여는 FIRST_VALUE 또는 다른 분석 함수를 이용할수 없다. 분석 함수는 다중 분석 함수를 할 수 없고, expr에 대하여 다른 편셩 함수 표현을 이용할 수 없다.

예제

다음 에제는 부서 아이디 90의 각 종업원에 대하여, 그 부서에서 급여가 제일 적은 종업원의 이름을 선택한다.

SELECT department_id, last_name, salary, FIRST_VALUE(last_name)
       OVER (ORDER BY salary ASC ROWS UNBOUNDED PRECEDING) AS lowest_sal
FROM ( SELECT * FROM employees WHERE department_id = 90
       ORDER BY employee_id);

DEPARTMENT_ID LAST_NAME         SALARY LOWEST_SAL
------------- ------------- ---------- -------------------------
           90 Kochhar            17000 Kochhar
           90 De Haan            17000 Kochhar
           90 King               24000 Kochhar

다음 예제는 FIRST_VALUE함수의 비결정적 성질을 설명한다. Kochhar과 DeHaan은 같은 급여를 가지며, 그렇기 때문에 인접한 행에 있다. Kochhar은 행이 employee_id에 의해 순서화된 서브쿼리에 의해 반환되기 때문에 첫번째에 나타난다. 그러나, 만약 서브쿼리에 의해 반환되는 행이 employee_id로 내림차순으로 순서화 되었으면, 다음의 예제에서 처럼 다른 값을 반환한다.

SELECT department_id, last_name, salary, FIRST_VALUE(last_name)
       OVER (ORDER BY salary ASC ROWS UNBOUNDED PRECEDING) as fv
FROM (SELECT * FROM employees WHERE department_id = 90
      ORDER by employee_id DESC);

DEPARTMENT_ID LAST_NAME         SALARY FV
------------- ------------- ---------- -------------------------
           90 De Haan            17000 De Haan
           90 Kochhar            17000 De Haan
           90 King               24000 De Haan

다음 예제는 unique키로 순서화에 의해 FIRST_VALUE함수를 결정하는 방법을 보인다.

SELECT department_id, last_name, salary, hire_date,
       FIRST_VALUE(last_name) OVER
      (ORDER BY salary ASC, hire_date ROWS UNBOUNDED PRECEDING) AS fv
FROM (SELECT * FROM employees
      WHERE department_id = 90 ORDER BY employee_id DESC);

DEPARTMENT_ID LAST_NAME         SALARY HIRE_DATE FV
------------- ------------- ---------- --------- ---------------
           90 Kochhar            17000 21-SEP-89 Kochhar
           90 De Haan            17000 13-JAN-93 Kochhar
           90 King               24000 17-JUN-87 Kochhar


LAG

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LAG

문법

lag::=
Description of lag.gif follows

그림 설명

See Also:

"Analytic Functions " for information on syntax, semantics, and restrictions, including valid forms of value_expr

목적

LAG함수는 분석 함수이다. 이 함수는 Self 조인 없이 동시에 테이블의 하나 이상의 행에 Access를 실행한다. 쿼리로부터 반환되는 행의 Series나 커서의 위치를 지정하면, LAG는 그 위치보다 이전에 주어진 행에 ACCESS를 실행한다.

만약 Offset을 지정하지 않으면, 기본적으로 1이다. 만약 Offset이 윈도우의 유효 범위를 넘었을경우, 옵션의 기본값이 반환된다. 만약 default값을 지정하지 않으면, 그것의 default는 NULL이다.

value_expr에 대하여 LAG 또는 다른 분석 함수를 지정할수 없다. Nest 분석 함수는 사용할 수 없지만, value_expr에 대하여 다른 built-in 함수를 사용할수 있다.

LEAD와 LAG 분석 함수는 동일한 테이블에 있는 다른 행의 값을 참조하기 위한 함수이다. LAG 분석 함수는 현재 행을 기준으로 이전 값을 참조하는 함수이고, LEAD 분석 함수는 이후의 값을 참조하는 함수이다. LAG와 LEAD 분석 함수에서 지정하는 인수는 현재 행을 기준으로 몇 번째 행을 참조할 것인지를 지정하며, 음수는 사용할 수 없다. 실무 데이터베이스에서 LAG와 LEAD 분석 함수는 일별 매출 추이 등과 같이 연속적인 데이터 값을 분석할 때 유용하게 사용할 수 있다.

See Also:

"About SQL Expressions " for information on valid forms of expr and LEAD

예제

다음 예제는 employees 테이블에서 각 판매원에 대하여, 직전에 고용된 종업원의 급여를 계산한다.

SELECT last_name, hire_date, salary,
   LAG(salary, 1, 0) OVER (ORDER BY hire_date) AS prev_sal
   FROM employees
   WHERE job_id = 'PU_CLERK';

LAST_NAME                 HIRE_DATE     SALARY   PREV_SAL
------------------------- --------- ---------- ----------
Khoo                      18-MAY-95       3100          0
Tobias                    24-JUL-97       2800       3100
Baida                     24-DEC-97       2900       2800
Himuro                    15-NOV-98       2600       2900
Colmenares                10-AUG-99       2500       2600


LAST_VALUE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LAST_VALUE

문법

last_value::=
Description of last_value.gif follows
Description of the illustration last_value.gif

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions, including valid forms of expr

목적

FIRST_VALUE 분석 함수는 윈도우에서 정렬된 값 중에서 첫 번째 값을 반한.
LAST_VALUE 분석 함수는 윈도우에서 정렬된 값중에서 마지막 값을 반환.

LAST_VALUE함수는 분석함수이다. 순서형 집합에서 마지막 값을 반환한다. 만약 집합내의 마지막 값이 Null이라면, 그 함수는 IGNORE NULL을 지정하지 않는한 Null을 반환한다. 이 설정은 데이터의 정밀화에 유용하다. 만약 IGNORE NULL을 지정하면, 그 때 LAST_VALUE함수는 집합내에서 최초 Non-Null값을 반환하거나, 만약 모든 값이 Null이라면 NULL을반환한다.

expr에 대하여 LAST_VALUE 또는 임의의 다른 분석 함수를 이용할수 없다. 분석함수는 중첩할수 없지만, expr에 대하여 다른 이미 만들어진 함수 표현을 이용할수 있다.

예제

다음 에제는 급여가 가장 많은 종업원의 대하여 고용 개시일을 각행에 반환한다.

SELECT last_name, salary, hire_date,
       (LAST_VALUE(hire_date) OVER ORDER BY salary ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS lv
FROM (SELECT * FROM employees WHERE department_id = 90
      ORDER BY hire_date);

LAST_NAME                     SALARY HIRE_DATE LV
------------------------- ---------- --------- ---------
Kochhar                        17000 21-SEP-89 17-JUN-87
De Haan                        17000 13-JAN-93 17-JUN-87
King                           24000 17-JUN-87 17-JUN-87

이 예제에서는 LAST_VALUE함수의 비결정적인 성질을 설명한다. Kochhar과 De Haan는 같은 급여가 같기 때문에, 인접한 행에 있다. Kochhar은 subquery에서 행은 고용일 순으로 있기 때문에 처음에 나타난다. 그러나, 만약 행이 고용일기준으로 내림차순이라면, 함수는 다른 값을 반환한다.

SELECT last_name, salary, hire_date,
       LAST_VALUE(hire_date) OVER (ORDER BY salary ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS lv
FROM (SELECT * FROM employees WHERE department_id = 90
      ORDER BY hire_date DESC);

LAST_NAME                     SALARY HIRE_DATE LV
------------------------- ---------- --------- ---------
De Haan                        17000 13-JAN-93 17-JUN-87
Kochhar                        17000 21-SEP-89 17-JUN-87
King                           24000 17-JUN-87 17-JUN-87

다음 두개의 예제는 Unique key에 의해 LAST_VALUE 함수가 어떻게 사용되는지 결정적으로 보여준다. salary와 hire_date에 의해 정령되어서, subquery에서 순서임에도 불구하고 같은 결과를 보인다.

SELECT last_name, salary, hire_date,
       LAST_VALUE(hire_date) OVER (ORDER BY salary, hire_date
       ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS lv
FROM (SELECT * FROM employees WHERE department_id = 90
      ORDER BY hire_date);

LAST_NAME                     SALARY HIRE_DATE LV
------------------------- ---------- --------- ---------
Kochhar                        17000 21-SEP-89 17-JUN-87
De Haan                        17000 13-JAN-93 17-JUN-87
King                           24000 17-JUN-87 17-JUN-87

SELECT last_name, salary, hire_date,
       LAST_VALUE(hire_date) OVER (ORDER BY salary, hire_date
       ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS lv
FROM (SELECT * FROM employees WHERE department_id = 90
      ORDER BY hire_date DESC);

LAST_NAME                     SALARY HIRE_DATE LV
------------------------- ---------- --------- ---------
Kochhar                        17000 21-SEP-89 17-JUN-87
De Haan                        17000 13-JAN-93 17-JUN-87
King                           24000 17-JUN-87 17-JUN-87


LEAD

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

LEAD

문법

lead::=
Description of lead.gif follows

그림 설명

참조 :

"Analytic Functions " for information on syntax, semantics, and restrictions, including valid forms of value_expr

목적

LEAD함수는 분석 함수이다. 이 함수는 Self 조인 없이 동시에 테이블의 하나 이상의 행에 Access를 실행한다. 쿼리로부터 반환되는 행의 Series나 커서의 위치를 지정하면, LEAD함수는 그 위치보다 이후에 있는 주어진 물리적 Offset의 행에 ACCESS한다.

만약 Offset을 지정하지 않으면, 기본적으로 1이다. 만약 Offset이 윈도우의 유효 범위를 넘었을경우, 옵션의 기본값이 반환된다. 만약 default값을 지정하지 않으면, 그것의 default는 NULL이다.

value_expr에 대하여 LAG 또는 다른 분석 함수를 지정할수 없다. Nest 분석 함수는 사용할 수 없지만, value_expr에 대하여 다른 built-in 함수를 사용할수 있다.

LEAD와 LAG 분석 함수는 동일한 테이블에 있는 다른 행의 값을 참조하기 위한 함수이다. LAG 분석 함수는 현재 행을 기준으로 이전 값을 참조하는 함수이고, LEAD 분석 함수는 이후의 값을 참조하는 함수이다.
LAG와 LEAD 분석 함수에서 지정하는 인수는 현재 행을 기준으로 몇 번째 행을 참조할 것인지를 지정하며, 음수는 사용할 수 없다.
실무 데이터베이스에서 LAG와 LEAD 분석 함수는 일별 매출 추이 등과 같이 연속적인 데이터 값을 분석할 때 유용하게 사용할 수 있다.

See Also:

"About SQL Expressions " for information on valid forms of expr and LAG

예제

다음 예제는 employees 테이블에서 각 판매원에 대하여, 직후에 고용된 종업원의 고용개시일을 구한다.

SELECT last_name, hire_date,
   LEAD(hire_date, 1) OVER (ORDER BY hire_date) AS "NextHired"
   FROM employees WHERE department_id = 30;

LAST_NAME                 HIRE_DATE NextHired
------------------------- --------- ---------
Raphaely                  07-DEC-94 18-MAY-95
Khoo                      18-MAY-95 24-JUL-97
Tobias                    24-JUL-97 24-DEC-97
Baida                     24-DEC-97 15-NOV-98
Himuro                    15-NOV-98 10-AUG-99
Colmenares                10-AUG-99


NTILE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

NTILE

문법

ntile::=
Description of ntile.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions, including valid forms of expr

목적

NTILE함수는 분석 함수 이다. 순서화된 데이터를 expr에 의해 지정된 bucket의 수로 분할하여, 각 행을 적절한 bucket 번호를 할당한다. buckets은 1~expr의 번호를 붙일수 있다. expr의 값은 각 파티션에 대하여 양의 정수로 변활될 필요가 있다. 오라클 데이터 베이스는 정수로 간주하기 위해, 만약 expr이 정수가 아닌 상수라면, 오라클은 정수로 값을 절삭한다. 반환되는 값은 NUMBER이다.

Bucket에서 행의 수는 대부분 1과 다를수 있다. 나머지 값(bucket에 의해 나누어진 행 수의 나머지)은 bucket 1로 시작하여서, 각 bucket에 하나씩 분할된다.

만약 expr이 행의 수보다 큰 경우에는, buckets의 수는 행의 수와 동일한 채워지고, 나머지는 bucket은 비운다.

expr에 NTILE 또는 다른 분석 함수를 이용할수 없다. 분석함수는 중첩 될수 없고, expr에는 다른 built-in 함수 표현은 사용할수 있다.

NTILE()함수는 정렬된 PARTITION을BUCKET이라 불리는 그룹별로 나누고 PARTITION내의 각 ROW등을 BUCKET에 배치하는 함수로 각 BECKET에는 동일한 수의 ROW가 배치된다. 예를 들어 PARTITION내에 100개의 ROW를 가지고 있고 4개의 BUCKET으로 나누는 NTILE(4)를 사용하면 1개의 BUCKET당 25개의 ROW가 배정된다. 만일 각 PARTION의 수가 정확하게 분배되지 않을 경우 근사치로 배분한 후 남는 값에 대하여 최초 PARTITION부터 한 개씩 배분한다. 즉, 만일 103개의 ROW에 대하여 NTILE(5)를 적용하면 첫번째 BUCKET부터 세번째까지는 21개의 ROW가, 나머지는 20개의 ROW가 배치된다.

[그림]는 "제품별 판매량을 구하고, 이를 4등급으로 나누어, 다시 등급 내에서 순위를 매겨라"는 질의를 NTILE()함수를 이용하여 구현한 것이다.

SELECT  p_productkey, sum(s_amount) AS sum_s_amount,
    NTILE(4) over (ORDER BY sum(s_amount) DESC) as 4_tile,
    RANK() OVER (PARTITION BY NTILE(4) over
    (ORDER BY sum(s_amount) DESC) ORDER BY sum_s_amount DESC)
    AS rank_in_quartile
FROM product, sales
WHERE p_productkey = s_productkey
GROUP BY p_productkey);

[그림] NTILE() 활용

예제

다음 예제는 부서 100으로 부터 oe.employees 테이블의 급여 열에서 값을 4개의 buckets으로 분할한다. 이 부문에서 급여 칼럼은 6개 값이 존재하기 때문에, 2개 여분의 값은 (6/4의 나머지) buckets의 1과 2에 할당된다. 그러므로 bucket 1과 2는 3과 4보다 하나더 할당된다.

SELECT last_name, salary, NTILE(4) OVER (ORDER BY salary DESC)
   AS quartile FROM employees
   WHERE department_id = 100;

LAST_NAME                     SALARY   QUARTILE
------------------------- ---------- ----------
Greenberg                      12000          1
Faviet                          9000          1
Chen                            8200          2
Urman                           7800          2
Sciarra                         7700          3
Popp                            6900          4


RATIO_TO_REPORT

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

RATIO_TO_REPORT

문법

ratio_to_report::=
Description of ratio_to_report.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions, including valid forms of expr

목적

RATIO_TO_REPORT함수는 분석 함수이다. 이 함수는 값의 세트의 합에 대한 값의 비율을 계산한다. 만약 expr이 NULL이라면, ratio-to-report값은 NULL이다.

값의 집합은 query_partition_clause에 의해서 정해진다. 만약 이 구문을 생략한다면, ratio-to-report는 쿼리에 의해 반환되는 모든 열에 의해 계산된다.

expr에 대해서는 RATIO_TO_REPORT 또는 임의의 다른 분석 함수를 이용할수 없다. 중첩 분석 함수는 이용할수 없으나, 다른 내장 함수를 이용할수 있다.

참고

http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTYxMg==

예제

다음 예제는 모든 사무원의 급여의 합계에 대한 각 사무원의 급여의 비율 값을 계산한다.

SELECT last_name, salary, RATIO_TO_REPORT(salary) OVER () AS rr
FROM employees
WHERE job_id = 'PU_CLERK';

LAST_NAME                     SALARY         RR
------------------------- ---------- ----------
Khoo                            3100 .223021583
Baida                           2900 .208633094
Tobias                          2800 .201438849
Himuro                          2600  .18705036
Colmenares                      2500 .179856115


ROW_NUMBER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ROW_NUMBER

문법

row_number::=
Description of row_number.gif follows

그림 설명

참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

ROW_NUMBER함수는 분석 함수이다. 이 함수는 1로 시작하는 order_by_clause에서 지정된 행의 순위 순서로, 적용되는 각 행에 unique 순서를 할당한다.(파티션에서 각 행 또는 쿼리에 의해서 반환되는 각 행)

지정된 범위에 대하여 ROW_NUMBER값을 검색하는 쿼리 내의 ROW_NUMBER를 이용하는 중첩하는 서브쿼리에의해, inner 쿼리의 결과로 부터 정확한 행의 부분집합을 얻을수 있다. 이 방법으로 함수를 이용하면, top-N,bottom-N,inner-N 리포트를 실행할 수 있다. 일관된 결과에 대하여, 쿼리는 결정적인 소트 순서를 확보할수 있다.

expr에 대하여 ROW_NUMBER 또는 다른 분석 함수를 이용할수 없다. 중첩 분석 함수를 이용할수 없으나, expr에 대하여 다른 이미있는 함수를 이용할수 있다.

ROW_NUMBER()는 각 PARTITION내에서 ORDER BY절에 의해 정렬된 순서로 유일한 값을 돌려주는 함수로 ROWNUM과는 관계가 없다.

예제

oe.employees 테이블에서 각 부분에 대하여, 다음 예제는 종업원의 고용일 각 순서에 대하여 number를 할당한다.

SELECT department_id, last_name, employee_id, ROW_NUMBER()
   OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
   FROM employees;

DEPARTMENT_ID LAST_NAME                 EMPLOYEE_ID     EMP_ID
------------- ------------------------- ----------- ----------
           10 Whalen                            200          1
           20 Hartstein                         201          1
           20 Fay                               202          2
           30 Raphaely                          114          1
           30 Khoo                              115          2
           30 Baida                             116          3
           30 Tobias                            117          4
           30 Himuro                            118          5
           30 Colmenares                        119          6
           40 Mavris                            203          1
. . .
          100 Popp                              113          6
          110 Higgins                           205          1
          110 Gietz                             206          2

ROW_NUMBER is a nondeterministic function. However, employee_id is a unique key, so the results of this application of the function are deterministic.

참 조:

FIRST_VALUE and LAST_VALUE for examples of nondeterministic behavior

The following inner-N query selects all rows from the employees table but returns only the fifty-first through one-hundredth row:

SELECT last_name FROM
   (SELECT last_name, ROW_NUMBER() over (order by last_name) R FROM employees)
   WHERE R BETWEEN 51 and 100;


DEREF

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

DEREF

문법

deref::=
Description of deref.gif follows

그림 설명

목적

DEREF함수는 인수 expr의 오브젝트 참조를 반환한다. 이 경우 expr은 오브젝트에 REF를 반환한다. 만약 쿼리에 이 함수를 이용하지 않는 경우, 오라클 데이터 베이스는 다음 예제가 보이는 대로, REF의 오브젝트 ID를 반환한다.

참 고:

MAKE_REF

예제

샘플 스키마 oe는 오브젝트 타입 cust_address_typ를 포함한다. "REF Constraint Examples" 는 유사한 형태 cust_address_typ_new 과 타입이 REF인 1개의 열을 가지는 테이블을 생성한다. 다음 예제는 각 열에 삽입하는 방법과 DEREF를 사용하여 열로부터 정보를 추출하는 방법을 나타낸다.

INSERT INTO address_table VALUES
   ('1 First', 'G45 EU8', 'Paris', 'CA', 'US');

INSERT INTO customer_addresses
  SELECT 999, REF(a) FROM address_table a;

SELECT address FROM customer_addresses;

ADDRESS
--------------------------------------------------------------------------------
000022020876B2245DBE325C5FE03400400B40DCB176B2245DBE305C5FE03400400B40DCB1

SELECT DEREF(address) FROM customer_addresses;

DEREF(ADDRESS)(STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
--------------------------------------------------------------------------------
CUST_ADDRESS_TYP('1 First', 'G45 EU8', 'Paris', 'CA', 'US')


MAKE_REF

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

MAKE_REF

문법

make_ref::=
Description of make_ref.gif follows

그림 설명

목적

MAKE_REF함수는 object 인식자가 주 키로 근거하고 있는 object 테이블에서 object view의 행 또는 object 표의 행에 대한 REF를 생성한다.

예제

샘플 스키마 oe는 inventory_type에 근거한 object 뷰 oc_inventories를 소유한다. object 인식자는 Product_id이다. 다음 예제는 3003의 Product_id를 가지는 object 뷰 oc_inventories에 있는 행에 REF를 생성한다.

SELECT MAKE_REF (oc_inventories, 3003) FROM DUAL;

MAKE_REF(OC_INVENTORIES,3003)
------------------------------------------------------------------
00004A038A0046857C14617141109EE03408002082543600000014260100010001
00290090606002A00078401FE0000000B03C21F040000000000000000000000000
0000000000


REF

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REF

문법

ref::=
Description of ref.gif follows

그림 설명

목적

REF함수는 인수로써 오브젝트 테이블 또는 오브젝트 뷰의 행과 연관된 상관 변수(테이블 별명)를 취한다. REF값은 변수 또는 행에 바인드된 오브젝트 인스턴수에 대한 REF값을 반환한다.

객체를 REF 타입값으로 반환.

예제

샘플 스키마 oe는 아래와 같은 cust_address_typ라 불리는 타입을 소유한다.

Attribute                                 Type
 ----------------------------- ----------------
 STREET_ADDRESS                    VARCHAR2(40)
 POSTAL_CODE                       VARCHAR2(10)
 CITY                              VARCHAR2(30)
 STATE_PROVINCE                    VARCHAR2(10)
 COUNTRY_ID                             CHAR(2)

다음 예제는 샘플 타입 oe.cust_address_typ에 근거한 테이블을 생성하고, 그 테이블 행을 삽입하고, address테이블에서 TYPE의 오브젝트 인스턴스에 대한 REF값을 추출한다.

CREATE TABLE addresses OF cust_address_typ;

INSERT INTO addresses VALUES (
   '123 First Street', '4GF H1J', 'Our Town', 'Ourcounty', 'US');

SELECT REF(e) FROM addresses e;

REF(E)
-----------------------------------------------------------------------------------
00002802097CD1261E51925B60E0340800208254367CD1261E51905B60E034080020825436010101820000


REFTOHEX

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

REFTOHEX

문법

reftohex::=
Description of reftohex.gif follows

그림 설명

목적

REFTOHEX함수는 인수 expr을 16진수로 변환한다. 인수 expr은 REF형을 반환할 필요가 있다.

예제

스키마 oe에는 warehouse_typ를 포함한다. 다음 예제는 열의 REF값을 16진수 문자로 변환하는 방법을 설명한다.

CREATE TABLE warehouse_table OF warehouse_typ
   (PRIMARY KEY (warehouse_id));

CREATE TABLE location_table
   (location_number NUMBER, building REF warehouse_typ
   SCOPE IS warehouse_table);

INSERT INTO warehouse_table VALUES (1, 'Downtown', 99);

INSERT INTO location_table SELECT 10, REF(w) FROM warehouse_table w;

SELECT REFTOHEX(building) FROM location_table;

REFTOHEX(BUILDING)
--------------------------------------------------------------------------
0000220208859B5E9255C31760E034080020825436859B5E9255C21760E034080020825436


VALUE

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

VALUE

문법

value::=
Description of value.gif follows

그림 설명

목 적

VALUE함수는 object 테이블의 행과 연관된 상관 변수(table alias)를 인수로 취하여, object 테이블에 저장된 object instance를 반환한다. object instance의 타입은 object 테이블과 같다.

예제

다음 예제는 "Substitutable Table and Column Examples": 로 생성된 oe.persons 테이블을 이용한다.

SELECT VALUE(p) FROM persons p;

VALUE(P)(NAME, SSN)
-------------------------------------------------------------
PERSON_T('Bob', 1234)
EMPLOYEE_T('Joe', 32456, 12, 100000)
PART_TIME_EMP_T('Tim', 5678, 13, 1000, 20)


CV

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

CV

문법

cv::=
Description of cv.gif follows

그림 설명

목적 : 우측 항 계산을 위해 좌측 항의 값 이용하기

CV함수는 내부행 측정에 대해 유효하다. CV함수는 단지 SELECT문장의 model구문에서만 이용되고, model 룰의 우측에서만 사용할수 있다. 룰의 좌측편에서 우측으로 이동한 디멘젼 열의 현재값을 반환한다. 이 함수는 디멘젼 열에 대한 상대적 색인을 제공하는 model_clause에서 이용된다. 반환되는 타입은 디멘젼 열의 데이터 타입이다. 만약 인수를 생략하면, 셀 참조내의 함수의 상대 위치에 상응하는 디멘젼 열이 기본적으로 사용된다.

CV함수는 셀 참조외에서도 사용할수 있다. 그 경우는 dimension_column이 필요하다.

참고

http://www.oracle.com/lang/kr/solutions/business_intelligence/collateral/bidw_pdf/10gr1_twp_bi_dw_sqlmodel_kor.pdf

예제

다음 예제는 디멘젼 열(마우스 패드 또는 표준 마우스)의 1999년 과 2000년의 현재 값이 나타내는 제품의 판매 합계를 그 제품의 2001년의 매상에 할당한다.

SELECT country, prod, year, s
FROM sales_view
MODEL PARTITION BY (country)
      DIMENSION BY (prod, year)
      MEASURES (sale s)
      IGNORE NAV
      UNIQUE DIMENSION
      RULES UPSERT SEQUENTIAL ORDER
      ( s[FOR prod in ('Mouse Pad', 'Standard Mouse'), 2001] =
        s[CV( ), 1999] + s[CV( ), 2000]
      )
ORDER BY country, prod, year;

COUNTRY       PROD                                         YEAR           S
----------    -----------------------------------      --------   ---------
France        Mouse Pad                                    1998     2509.42
France        Mouse Pad                                    1999     3678.69
France        Mouse Pad                                    2000     3000.72
France        Mouse Pad                                    2001     6679.41
France        Standard Mouse                               1998     2390.83
France        Standard Mouse                               1999     2280.45
France        Standard Mouse                               2000     1274.31
France        Standard Mouse                               2001     3554.76
Germany       Mouse Pad                                    1998     5827.87
Germany       Mouse Pad                                    1999     8346.44
Germany       Mouse Pad                                    2000     7375.46
Germany       Mouse Pad                                    2001     15721.9
Germany       Standard Mouse                               1998     7116.11
Germany       Standard Mouse                               1999     6263.14
Germany       Standard Mouse                               2000     2637.31
Germany       Standard Mouse                               2001     8900.45

16 rows selected.
이 예제는 뷰 sales_view가 필요하다. 이 뷰를 생성하기 위해서는 "Interrow Calculations: Examples" 참조.


ITERATION_NUMBER

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

ITERATION_NUMBER

문법

iteration_number::=
Description of iteration_number.gif follows

그림 설명

목적

ITERATION_NUMBER함수는 열사이 측정에 대하여 적절하다. 이 함수는 SELECT 문장의 model_clause에서 이용될수 있고, ITERATE(number)가 model_rules_clause에 지정되어 있을때 사용할수 있다. 이 함수는 모델 규칙에 따라 완료된 반복을 나타내는 정수를 반환한다. ITERATION_NUMBER 함수는 처음 반복하는 동안에는 0을 반환한다. 이후 반복에서 ITERATION_NUMBER 함수는 iteration_number +1을 반환한다.

예제

다음 예제는 1998년과 1999년에 대한 마우스 패트의 판매액을 각각 2001년과 2002년의 판매액에 할당한다.

SELECT country, prod, year, s
FROM sales_view
MODEL PARTITION BY (country)
      DIMENSION BY (prod, year)
      MEASURES (sale s)
      IGNORE NAV
      UNIQUE DIMENSION
      RULES UPSERT SEQUENTIAL ORDER ITERATE(2)
        (
          s['Mouse Pad', 2001 + ITERATION_NUMBER] =
          s['Mouse Pad', 1998 + ITERATION_NUMBER]
        )
  ORDER BY country, prod, year;

COUNTRY       PROD                                         YEAR           S
----------    -----------------------------------      --------   ---------
France        Mouse Pad                                    1998     2509.42
France        Mouse Pad                                    1999     3678.69
France        Mouse Pad                                    2000     3000.72
France        Mouse Pad                                    2001     2509.42
France        Mouse Pad                                    2002     3678.69
France        Standard Mouse                               1998     2390.83
France        Standard Mouse                               1999     2280.45
France        Standard Mouse                               2000     1274.31
France        Standard Mouse                               2001     2164.54
Germany       Mouse Pad                                    1998     5827.87
Germany       Mouse Pad                                    1999     8346.44
Germany       Mouse Pad                                    2000     7375.46
Germany       Mouse Pad                                    2001     5827.87
Germany       Mouse Pad                                    2002     8346.44
Germany       Standard Mouse                               1998     7116.11
Germany       Standard Mouse                               1999     6263.14
Germany       Standard Mouse                               2000     2637.31
Germany       Standard Mouse                               2001     6456.13

18 rows selected.

이전 예제는 sales_view 뷰가 필요하다. "Interrow Calculations: Examples" 참조.


PRESENTNNV

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

PRESENTNNV

문법

presentnnv::=
Description of presentnnv.gif follows

그림 설명

목적

PRESENTNNV 함수는 행상호간 계산에 대해 유용하다. PRESENTNNV함수는 단지 SELECT구문의 model_clause에서 이용되고, model rule의 오른쪽에서 사용될수 있다. 이 함수는 cell_reference가 존재하고 NULL이 아닌 경우, model_clause이 실행되기 전에 expr1을 반환한다. 이 외의 경우에는 expr2를 반환한다.

예제

다음 예제는 만약 2002년 마우스 패드에 대한 판매액을 가진 행이 존재하고 판매액이 NULL이 아니라면, 그 판매액 값을 반환한다. 만약 행이 존재하나, 판매액이 NULL이라면, 그 때 판매액 값은 10으로 설정된다. 만약 행이 존재하지 않는다면, 행은 10으로 설정한 판매액을 생성한다.

SELECT country, prod, year, s
  FROM sales_view
  MODEL
    PARTITION BY (country)
    DIMENSION BY (prod, year)
    MEASURES (sale s)
    IGNORE NAV
    UNIQUE DIMENSION
    RULES UPSERT SEQUENTIAL ORDER
    (
      s['Mouse Pad', 2002] =
        PRESENTNNV(s['Mouse Pad', 2002], s['Mouse Pad', 2002], 10)
    )
  ORDER BY country, prod, year;

COUNTRY       PROD                                         YEAR           S
----------    -----------------------------------      --------   ---------
France        Mouse Pad                                    1998     2509.42
France        Mouse Pad                                    1999     3678.69
France        Mouse Pad                                    2000     3000.72
France        Mouse Pad                                    2001     3269.09
France        Mouse Pad                                    2002          10
France        Standard Mouse                               1998     2390.83
France        Standard Mouse                               1999     2280.45
France        Standard Mouse                               2000     1274.31
France        Standard Mouse                               2001     2164.54
Germany       Mouse Pad                                    1998     5827.87
Germany       Mouse Pad                                    1999     8346.44
Germany       Mouse Pad                                    2000     7375.46
Germany       Mouse Pad                                    2001     9535.08
Germany       Mouse Pad                                    2002          10
Germany       Standard Mouse                               1998     7116.11
Germany       Standard Mouse                               1999     6263.14
Germany       Standard Mouse                               2000     2637.31
Germany       Standard Mouse                               2001     6456.13

18 rows selected.

이 예제는 뷰 sales_view가 필요한다. 이 뷰 생성은 다음을 참조. (모델 구분)


PRESENTV

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

PRESENTV

문법

presentv::=
Description of presentv.gif follows

그림 설명

목적

PRESENTV 함수는 행상호간 계산에 대해 유용하다. PRESENTNNV함수는 단지 SELECT구문의 model_clause에서 이용되고, model rule의 오른쪽에서 사용될수 있다.model_clause의 실행전에 cell_reference가 존재할때 expr1을 반환한다. 그 이외에는 expr2를 반환한다.

예제

다음 예제는 만약 2000년 마우스 패드에 대한 판매액을 가지는 행이 존재한다면, 20001년의 마우스패드에 대한 값은 2000년도의 값을 설정한다. 만약 행이 존재하지 않는다면, 2001년도의 값은 0으로 설정한다.

SELECT country, prod, year, s
  FROM sales_view
  MODEL
    PARTITION BY (country)
    DIMENSION BY (prod, year)
    MEASURES (sale s)
    IGNORE NAV
    UNIQUE DIMENSION
    RULES UPSERT SEQUENTIAL ORDER
    (
      s['Mouse Pad', 2001] =
        PRESENTV(s['Mouse Pad', 2000], s['Mouse Pad', 2000], 0)
    )
  ORDER BY country, prod, year;

COUNTRY       PROD                                         YEAR           S
----------    -----------------------------------      --------   ---------
France        Mouse Pad                                    1998     2509.42
France        Mouse Pad                                    1999     3678.69
France        Mouse Pad                                    2000     3000.72
France        Mouse Pad                                    2001     3000.72
France        Standard Mouse                               1998     2390.83
France        Standard Mouse                               1999     2280.45
France        Standard Mouse                               2000     1274.31
France        Standard Mouse                               2001     2164.54
Germany       Mouse Pad                                    1998     5827.87
Germany       Mouse Pad                                    1999     8346.44
Germany       Mouse Pad                                    2000     7375.46
Germany       Mouse Pad                                    2001     7375.46
Germany       Standard Mouse                               1998     7116.11
Germany       Standard Mouse                               1999     6263.14
Germany       Standard Mouse                               2000     2637.31
Germany       Standard Mouse                               2001     6456.13

16 rows selected.

이 예제는 뷰 sales_view가 필요한다. 이 뷰 생성은 다음을 참조. (모델 구분)


PREVIOUS

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

PREVIOUS

문법

previous::=
Description of previous.gif follows

그림 설명

목적

PREVIOUS함수는 행상호간 계산에 유용하다. 이 함수는 SELECT문장의 model_clause과 model_rules_clause의 ITERATE..[UNTIL]구문에서 이용될수 있다. 각 iteration의 초기에 cell_reference의 값을 반환한다.

예제

다음 예제는 iteration의 초기와 마지막에서 cur_val의 값사이의 차이가 1미만이 될때까지 최대 1000번 룰을 반복한다.(10->5->2.5->1.25->0.625)

SELECT dim_col, cur_val, num_of_iterations
  FROM (SELECT 1 AS dim_col, 10 AS cur_val FROM dual)
  MODEL
    DIMENSION BY (dim_col)
    MEASURES (cur_val, 0 num_of_iterations)
    IGNORE NAV
    UNIQUE DIMENSION
    RULES ITERATE (1000) UNTIL (PREVIOUS(cur_val[1]) - cur_val[1] < 1)
    (
      cur_val[1] = cur_val[1]/2,
      num_of_iterations[1] = num_of_iterations[1] + 1
    );

   DIM_COL    CUR_VAL NUM_OF_ITERATIONS
---------- ---------- -----------------
         1       .625                 4


UPDATEXML

오라클 10g 함수
Go to Documentation Home
HOME 		Go to Book List
ORA_home 		Go to Table of Contents
연구회 		Go to Index
자료실 		Go to Master Index
ORA_10G 		Go to Feedback page
MAIL
Go to previous page
Previous 		Go to next page
Next

UPDATEXML

문법

updatexml::=
Description of updatexml.gif follows

그림 설명

목적

UPDATEXML함수는 인수로써 XMLType인스턴스와 XPath값 쌍을 취하고, 업데이트된 값을 가지는 XMLType 인스턴스를 반환한다. 만약 XPath_string가 XML요소라면, 상응하는 value_expr은 XMLType 인스턴스이다. 만약 XPath_string가 속성 또는 텍스트 노드라면, value_expr은 임의의 스칼라 데이터 타입니다. 각 XPath_string의 타겟의 데이터 타입과 그에 상응하는 value_expr은 일치할 필요가 있다. 옵션 namespace_string는 접두사에 대한 기본적 맵핑 또는 namespace맵핑을 지정하는 VARCHAR2값을 해결할 필요가 있다. 오라클 데이터 베이스는 XPath 식을 평가할때 이용된다.

만약 XML 요소를 Null로 업데이트된다면, 오라클은 속성과 요소의 자식을 삭제하고, 요소는 공백으로 된다. 만약 요소의 텍트스 노드를 Null로 업데이트한다면, 오라클은 요소의 텍스트 값을 제거하고, 요소 자체는 유지되고, 공백으로 된다.

대부분의 경우에 이 함수는 메모리내의 XML문서를 실체화하고, 그 값을 업데이트한다. 그러나, UPDATEXML은 object-relational열에서 UPDATE문장에 대해 최적화되고, 함수는 열에서 직접적으로 값을 업데이트한다. 이 최적화는 다음 조건이 필요하다.

  • XMLType_instance는 UPDATE..SET구문에서 열과 같을 필요가 있다.

  • XPath_string 스칼라 컨텐츠가 될 필요가 있다.

수정된 결과를 XML 파일에 반영하는 함수인 updateXML

예제

다음 예제는 샘플 스키마 OE에서 San Francisco warehouse의 DOCK의 수를 4로 업데이트한다. 이것은 XMLType타입의 warehouse_spce열을 가진다.

SELECT warehouse_name,
   EXTRACT(warehouse_spec, '/Warehouse/Docks')
   "Number of Docks"
   FROM warehouses
   WHERE warehouse_name = 'San Francisco';

WAREHOUSE_NAME       Number of Docks
-------------------- --------------------
San Francisco        <Docks>1</Docks>

UPDATE warehouses SET warehouse_spec =
   UPDATEXML(warehouse_spec,
   '/Warehouse/Docks/text()',4)
   WHERE warehouse_name = 'San Francisco';

1 row updated.

SELECT warehouse_name,
   EXTRACT(warehouse_spec, '/Warehouse/Docks')
   "Number of Docks"
   FROM warehouses
   WHERE warehouse_name = 'San Francisco';

WAREHOUSE_NAME       Number of Docks
-------------------- --------------------
San Francisco        <Docks>4</Docks>