COLLATE 函数 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从 2025 年 11 月 1 日起,Amazon Redshift 将不再支持创建新的 Python UDF。如果您想要使用 Python UDF,请在该日期之前创建 UDF。现有的 Python UDF 将继续正常运行。有关更多信息,请参阅博客文章

COLLATE 函数

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

有关如何使用数据库排序规则创建表的信息,请参阅CREATE TABLE

有关如何使用数据库排序规则创建数据库的信息,请参阅CREATE DATABASE

语法

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

参数

string

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

'case_sensitive' | 'cs' | 'case_insensitive' | 'ci'

排序规则名称的字符串常量。Amazon Redshift 对此参数仅支持以下值:

  • case_sensitive

  • cs

  • case_insensitive

  • ci

case_sensitivecs 可以互换,生成的结果相同。同样,case_insensitiveci 可以互换,生成的结果相同。

返回类型

COLLATE 函数根据第一个输入表达式类型返回 VARCHARCHAR。此函数仅更改第一个输入参数的排序规则,不会更改其输出值。

示例

要创建表 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。第二个查询同时返回 johnJOHN

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 同时返回 johnJOHN。在 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 | +------+