

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# FNV\$1HASH 함수
<a name="r_FNV_HASH"></a>

모든 기본 데이터 형식에 대해 64비트 FNV-1a 비암호화 해시 함수를 계산합니다.

## 구문
<a name="r_FNV_HASH-synopsis"></a>

```
FNV_HASH(value [, seed])
```

## 인수
<a name="r_FNV_HASH-argument-arguments"></a>

 * 값*  
입력 값은 해시 처리할 수 있습니다. Amazon Redshift는 값의 이진 표현을 사용하여 입력 값을 해시 처리합니다. 예를 들어 INTEGER 값은 4바이트를 사용하여 해시 처리되고 BIGINT 값은 8바이트를 사용하여 해시 처리됩니다. 또한 해싱 CHAR 및 VARCHAR 입력은 후행 공백을 무시하지 않습니다.

 *%seed*  
해시 함수의 BIGINT 시드는 선택 사항입니다. 지정하지 않으면 Amazon Redshift는 기본 FNV 시드를 사용합니다. 이렇게 하면 변환 또는 연결 없이 여러 열의 해시를 결합할 수 있습니다.

## 반환 타입
<a name="r_FNV_HASH-return-type"></a>

BIGINT

## 예제
<a name="r_FNV_HASH-example"></a>

다음은 숫자의 FNV 해시, 'Amazon Redshift' 문자열 및 이 둘의 연결을 반환하는 예입니다.

```
select fnv_hash(1);
        fnv_hash
----------------------
 -5968735742475085980
(1 row)
```

```
select fnv_hash('Amazon Redshift');
      fnv_hash
---------------------
 7783490368944507294
(1 row)
```

```
select fnv_hash('Amazon Redshift', fnv_hash(1));
       fnv_hash
----------------------
 -2202602717770968555
(1 row)
```

## 사용 노트
<a name="r_FNV_HASH-usage-notes"></a>
+ 여러 열이 있는 테이블의 해시를 계산하려면 첫 번째 열의 FNV 해시를 계산하여 두 번째 열의 해시에 시드로 전달하면 됩니다. 그런 다음 두 번째 열의 FNV 해시를 세 번째 열의 해시에 시드로 전달합니다.

  다음은 여러 열이 있는 테이블을 해시 처리할 시드를 생성하는 예입니다.

  ```
  select fnv_hash(column_3, fnv_hash(column_2, fnv_hash(column_1))) from sample_table;
  ```
+ 동일한 속성을 사용하여 문자열 연결 해시를 계산할 수 있습니다.

  ```
  select fnv_hash('abcd');
         fnv_hash
  ---------------------
   -281581062704388899
  (1 row)
  ```

  ```
  select fnv_hash('cd', fnv_hash('ab'));
        fnv_hash
  ---------------------
   -281581062704388899
  (1 row)
  ```
+ 해시 함수는 입력 유형을 사용하여 해시 처리할 바이트 수를 결정합니다. 필요한 경우 캐스팅을 사용하여 특정 유형을 적용합니다.

  다음은 다른 결과를 생성하기 위해 다른 유형의 입력을 사용하는 예입니다.

  ```
  select fnv_hash(1::smallint);
        fnv_hash
  --------------------
   589727492704079044
  (1 row)
  ```

  ```
  select fnv_hash(1);
         fnv_hash
  ----------------------
   -5968735742475085980
  (1 row)
  ```

  ```
  select fnv_hash(1::bigint);
         fnv_hash
  ----------------------
   -8517097267634966620
  (1 row)
  ```