

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# DIFFERENCE 函数
<a name="DIFFERENCE"></a>

DIFFERENCE 函数比较两个字符串的美国 Soundex 代码。该函数返回 `INTEGER`，以指示 Soundex 代码之间匹配的字符数。

 Soundex 代码是一个长度为四个字符的字符串。Soundex 代码表示单词的发音方式，而不是其拼写方式。例如，`Smith` 和 `Smyth` 具有相同的 Soundex 代码。

## 语法
<a name="DIFFERENCE-synopsis"></a>

```
DIFFERENCE(string1, string2)
```

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

 *string1*   
`CHAR` 字符串、`VARCHAR` 字符串或隐式计算为 `CHAR` 或 `VARCHAR` 类型的表达式。

 *string2*   
`CHAR` 字符串、`VARCHAR` 字符串或隐式计算为 `CHAR` 或 `VARCHAR` 类型的表达式。

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

 INTEGER   
DIFFERENCE 函数返回 0–4 之间的一个 `INTEGER` 值，该值计算两个字符串的美国 Soundex 代码中匹配字符的数量。Soundex 代码具有 4 个字符，因此，当字符串的所有 4 个字符的美国 Soundex 代码值都相同时，DIFFERENCE 函数返回 `4`。如果两个字符串中有一个为空，则 DIFFERENCE 返回 `0`。如果两个字符串都不包含有效字符，则此函数返回 `1`。DIFFERENCE 函数仅转换英文字母小写或大写 ASCII 字符，包括 a–z 和 A–Z。DIFFERENCE 将忽略其他字符。

## 示例
<a name="DIFFERENCE-examples"></a>

要比较字符串 `%` 和 `@` 的 Soundex 值，请使用以下示例。因为这两个字符串都不包含有效字符，所以此函数返回 `1`。

```
SELECT DIFFERENCE('%', '@');

+------------+
| difference |
+------------+
|          1 |
+------------+
```

要比较 `Amazon` 和一个空字符串的 Soundex 值，请使用以下示例。因为两个字符串中有一个是空的，所以该函数返回 `0`。

```
SELECT DIFFERENCE('Amazon', '');

+------------+
| difference |
+------------+
|          0 |
+------------+
```

要比较字符串 `Amazon` 和 `Ama` 的 Soundex 值，请使用以下示例。因为字符串的 Soundex 值中有 2 个字符是相同的，所以该函数返回 `2`。

```
SELECT DIFFERENCE('Amazon', 'Ama');

+------------+
| difference |
+------------+
|          2 |
+------------+
```

要比较字符串 `Amazon` 和 `+-*/%Amazon` 的 Soundex 值，请使用以下示例。因为字符串的 Soundex 值中所有 4 个字符都是相同的，所以该函数返回 `4`。请注意，该函数会忽略第二个字符串中的无效字符 `+-*/%`。

```
SELECT DIFFERENCE('Amazon', '+-*/%Amazon');

+------------+
| difference |
+------------+
|          4 |
+------------+
```

要比较字符串 `AC/DC` 和 `Ay See Dee See` 的 Soundex 值，请使用以下示例。因为字符串的 Soundex 值中所有 4 个字符都是相同的，所以该函数返回 `4`。

```
SELECT DIFFERENCE('AC/DC', 'Ay See Dee See');

+------------+
| difference |
+------------+
|          4 |
+------------+
```