

 从补丁 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/)。

# ARRAY\$1EXCEPT 函数
<a name="array_except"></a>

通过保留第一个数组中不存在于第二个数组中的元素，返回两个数组之间的差异。该函数是 NULL 安全的，这意味着它将 NULL 视为已知对象。

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

```
ARRAY_EXCEPT( array1, array2 [, distinct] )
```

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

 *array1*   
一个用于指定第一个数组的 SUPER 表达式。

 *array2*   
一个用于指定第二个数组的 SUPER 表达式。

 *区分*   
一个布尔值，用于指定是否只返回不同的元素：  
+ *distinct* = FALSE：多集语义适用。第一个数组中元素的每次出现都与第二个数组中的出现进行匹配。如果第一个数组中某个元素的出现次数多于第二个数组，则多余的出现次数将保留在结果中。
+ *distinct* = TRUE：集合语义适用。两个数组都被视为集合，忽略重复的元素。如果第一个数组中的元素存在于第二个数组中的任何地方，则无论出现次数如何，元素都将被移除。
默认值为 FALSE。

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

ARRAY\$1EXCEPT 函数返回 SUPER 类型。

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

以下示例显示 ARRAY\$1EXCEPT 函数。

```
SELECT ARRAY_EXCEPT(ARRAY('a','b','c'), ARRAY('b','c','d'));
 array_except
--------------
 ["a"]
(1 row)
```

多集语义：

```
SELECT ARRAY_EXCEPT(ARRAY('b','b','b','b'), ARRAY('b','b'));
 array_except
--------------
 ["b","b"]
(1 row)
```

集语义：

```
SELECT ARRAY_EXCEPT(ARRAY('a','b','b'), ARRAY('b'), TRUE);
 array_except
--------------
 ["a"]
(1 row)
```

NULL 被视为已知对象。

```
SELECT ARRAY_EXCEPT(ARRAY('a',NULL), ARRAY(NULL));
 array_except
--------------
 ["a"]
(1 row)
```

## 另请参阅
<a name="array_except-see-also"></a>
+ [ARRAY\$1INTERSECTION 函数](array_intersection.md)
+ [ARRAY\$1UNION 函数](array_union.md)
+ [ARRAY\$1DISTINCT 函数](array_distinct.md)
+ [ARRAYS\$1OVERLAP 函数](arrays_overlap.md)