COLLATE 函数
COLLATE 函数覆盖字符串列或表达式的排序规则。
有关如何使用数据库排序规则创建表的信息,请参阅CREATE TABLE。
有关如何使用数据库排序规则创建数据库的信息,请参阅CREATE DATABASE。
语法
COLLATE(
string
, 'case_sensitive' | 'case_insensitive');
参数
- string
-
要覆盖的字符串列或表达式。
- 'case_sensitive' | 'case_insensitive'
-
排序规则名称的字符串常量。Amazon Redshift 仅支持 case_sensitive 或 case_insensitive。
返回类型
COLLATE 函数根据第一个输入表达式类型返回 VARCHAR
或 CHAR
。此函数仅更改第一个输入参数的排序规则,不会更改其输出值。
示例
要创建表 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 | +------+