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 函數CHAR會根據第一個輸入表達式類型傳回 VARCHAR或 。此函數只會變更第一個輸入引數的定序,而不會變更其輸出值。

範例

若要建立資料表 T 並將資料表 T 中的 col1 定義為 case_sensitive,請使用下列範例。

CREATE TABLE T ( col1 Varchar(20) COLLATE case_sensitive ); INSERT INTO T VALUES ('john'),('JOHN');

當您執行第一個查詢時,Amazon Redshift 只會傳回 john。COLLATE 函數在 col1 上執行後,定序會變成 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。COLLATE 函數在 col1 上執行後,定序會變成 case_sensitive。第二個查詢只會傳回 john

SELECT * FROM A WHERE col1 = 'john'; +------+ | col1 | +------+ | john | | JOHN | +------+ SELECT * FROM A WHERE COLLATE(col1, 'case_sensitive') = 'john'; +------+ | col1 | +------+ | john | +------+