

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

# COLLATE 函数
COLLATE

COLLATE 函数覆盖字符串列或表达式的排序规则。

有关如何使用数据库排序规则创建表的信息，请参阅[CREATE TABLE](r_CREATE_TABLE_NEW.md)。

有关如何使用数据库排序规则创建数据库的信息，请参阅[CREATE DATABASE](r_CREATE_DATABASE.md)。

## 语法
语法

```
COLLATE( string, 'case_sensitive' | 'cs' | 'case_insensitive' | 'ci');
```

## 参数
参数

 *string*   
要覆盖的字符串列或表达式。

 *'case\$1sensitive'* \$1 *'cs'* \$1 *'case\$1insensitive'* \$1 *'ci'*  
排序规则名称的字符串常量。Amazon Redshift 对此参数仅支持以下值：  
+  *case\$1sensitive* 
+  *cs* 
+  *case\$1insensitive* 
+  *ci* 
*case\$1sensitive* 和 *cs* 可以互换，生成的结果相同。同样，*case\$1insensitive* 和 *ci* 可以互换，生成的结果相同。

## 返回类型
返回类型

COLLATE 函数根据第一个输入表达式类型返回 `VARCHAR`、`CHAR` 或 `SUPER`。此函数仅更改第一个输入参数的排序规则，不会更改其输出值。

## 示例
示例

要创建表 T 并将表 T 中的 col1 定义为 `case_sensitive`，请使用以下示例。

```
CREATE TABLE T ( col1 Varchar(20) COLLATE case_sensitive );

INSERT INTO T VALUES ('john'),('JOHN');
```

 当您运行第一个查询时，Amazon Redshift 仅返回 `john`。在 col1 上运行 COLLATE 函数后，排序规则变成 `case_insensitive`。第二个查询同时返回 `john` 和 `JOHN`。

```
SELECT * FROM T WHERE col1 = 'john';

+------+
| col1 |
+------+
| john |
+------+

SELECT * FROM T WHERE COLLATE(col1, 'case_insensitive') = 'john';

+------+
| col1 |
+------+
| john |
| JOHN |
+------+
```

要创建表 A 并将表 A 中的 col1 定义为 `case_insensitive`，请使用以下示例。

```
CREATE TABLE A ( col1 Varchar(20) COLLATE case_insensitive );

INSERT INTO A VALUES ('john'),('JOHN');
```

 当您运行第一个查询时，Amazon Redshift 同时返回 `john` 和 `JOHN`。在 col1 上运行 COLLATE 函数后，排序规则变成 `case_sensitive`。第二个查询仅返回 `john`。

```
SELECT * FROM A WHERE col1 = 'john';

+------+
| col1 |
+------+
| john |
| JOHN |
+------+

SELECT * FROM A WHERE COLLATE(col1, 'case_sensitive') = 'john';

+------+
| col1 |
+------+
| john |
+------+
```