728x90
ORA_HASH
구문
ORA_HASH(expr [, max_bucket [, seed_value ] ])
목적
ORA_HASH는 주어진 식(expression)에 대한 해시 값을 계산하는 함수입니다. 이 함수는 데이터의 하위 집합을 분석하거나 무작위 샘플을 생성하는 작업과 같은 상황에 유용합니다.
- expr 인수는 Oracle Database가 해시 값을 계산하기를 원하는 데이터를 결정합니다. expr로 나타내는 데이터의 길이에 대한 제한은 없으며, 일반적으로 열 이름으로 해결됩니다. expr은 LONG 또는 LOB 유형일 수 없습니다. 중첩 테이블 유형일 경우에만 사용자 정의 객체 유형이 될 수 있습니다. 중첩 테이블 유형의 해시 값은 컬렉션 내 요소의 순서에 의존하지 않습니다. 다른 모든 데이터 유형은 expr에 대해 지원됩니다.
- 선택적으로 사용하는 max_bucket 인수는 해시 함수가 반환하는 최대 버킷 값을 결정합니다. 0에서 4294967295 사이의 값 중 어떤 값을 지정할 수 있습니다. 기본값은 4294967295입니다.
- 선택적으로 사용하는 seed_value 인수는 Oracle이 동일한 데이터 집합에 대해 많은 다른 결과를 생성할 수 있도록 합니다. Oracle은 해시 함수를 expr과 seed_value의 조합에 적용합니다. 0에서 4294967295 사이의 값 중 어떤 값을 지정할 수 있습니다. 기본값은 0입니다.
이 함수는 NUMBER 값으로 반환됩니다.
예제
다음 예제는 sh.sales 테이블에서 고객 ID와 제품 ID의 각 조합에 대한 해시 값을 생성하고, 해시 값을 최대 100개 버킷으로 나눈 다음 첫 번째 버킷(버킷 0)의 amount_sold 값을 반환합니다. 세 번째 인수(5)는 해시 함수에 대한 시드 값을 제공합니다. 시드 값을 변경하여 동일한 쿼리에 대해 다른 해시 결과를 얻을 수 있습니다.
SELECT SUM(amount_sold)
FROM sales
WHERE ORA_HASH(CONCAT(cust_id, prod_id), 99, 5) = 0;
SUM(AMOUNT_SOLD)
----------------
989431.14
출처: 오라클 레퍼런스
원문 링크: Oracle ORA_HASH 함수 문서
반응형
댓글