COLLATE 函数 - Amazon Redshift

COLLATE 函数

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

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

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

语法

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

参数

string

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

'case_sensitive' | 'case_insensitive'

排序规则名称的字符串常量。Amazon Redshift 仅支持 case_sensitivecase_insensitive

返回类型

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 | +------+