

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 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/)。

# MURMUR3\$132\$1HASH
<a name="MURMUR3_32_HASH"></a>

MURMUR3\$132\$1HASH 函数计算包括数值和字符串类型在内的所有常见数据类型的 32 位 Murmur3A 非加密哈希。

## 语法
<a name="MURMUR3_32_HASH-syntax"></a>

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

## 参数
<a name="MURMUR3_32_HASH-arguments"></a>

 *值*   
要进行哈希处理的输入值。Amazon Redshift 对输入值的二进制表示进行哈希处理。此行为类似于 [FNV\$1HASH 函数](r_FNV_HASH.md)，但值会转换为由 [Apache Iceberg 32 位 Murmur3 哈希规范](https://iceberg.apache.org/spec/#appendix-b-32-bit-hash-requirements)指定的二进制表示形式。

 *%seed*   
哈希函数的 INT 种子。此参数是可选的。如果未给定，Amazon Redshift 使用默认种子 0。这样可以组合多个列的哈希，而无需任何转换或联接。

## 返回类型
<a name="MURMUR3_32_HASH-return-type"></a>

此函数返回 INT。

## 示例
<a name="MURMUR3_32_HASH-example"></a>

以下示例分别返回数字、字符串“Amazon Redshift”以及两者的联接的 Murmur3 哈希值。

```
select MURMUR3_32_HASH(1);
    
    MURMUR3_32_HASH
----------------------
 1392991556
(1 row)
```

```
select MURMUR3_32_HASH('Amazon Redshift');
    
    MURMUR3_32_HASH
----------------------
 -1563580564
(1 row)
```

```
select MURMUR3_32_HASH('Amazon Redshift', MURMUR3_32_HASH(1));
    
    MURMUR3_32_HASH
----------------------
 -1346554171
(1 row)
```

## 使用说明
<a name="MURMUR3_32_HASH-usage-notes"></a>

要计算具有多列的表的哈希，可以计算第一列的 Murmur3 哈希，并将其作为种子传递给第二列的哈希。然后，它将第二列的 Murmur3 哈希作为种子传递给第三列的哈希。

以下示例创建种子来对包含多列的表进行哈希处理。

```
select MURMUR3_32_HASH(column_3, MURMUR3_32_HASH(column_2, MURMUR3_32_HASH(column_1))) from sample_table;
```

同一个属性可用于计算字符串联接的哈希。

```
select MURMUR3_32_HASH('abcd');
   
   MURMUR3_32_HASH
---------------------
 1139631978
(1 row)
```

```
select MURMUR3_32_HASH('cd', MURMUR3_32_HASH('ab'));
   
   MURMUR3_32_HASH
---------------------
 1711522338
(1 row)
```

哈希函数使用输入的类型来确定要进行哈希处理的字节数。如有必要，使用强制转换来强制特定类型。

以下示例使用不同的输入类型来生成不同的结果。

```
select MURMUR3_32_HASH(1, MURMUR3_32_HASH(1));
   
   MURMUR3_32_HASH
--------------------
 -1193428387
(1 row)
```

```
select MURMUR3_32_HASH(1);
   
   MURMUR3_32_HASH
----------------------
 1392991556
(1 row)
```

```
select MURMUR3_32_HASH(1, MURMUR3_32_HASH(2));
   
   MURMUR3_32_HASH
----------------------
 1179621905
(1 row)
```