本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
COLLATE 函數
COLLATE 函數會覆寫字串欄或表達式的定序。
如需如何使用資料庫定序建立資料表的資訊,請參閱CREATE TABLE。
如需如何使用資料庫定序建立資料庫的資訊,請參閱CREATE DATABASE。
語法
COLLATE(
string
, 'case_sensitive' | 'case_insensitive');
引數
- string
-
您要覆寫的字串欄或運算式。
- 'case_sensitive' | 'case_insensitive'
-
定序名稱的字串常數。Amazon Redshift 只支援 case_sensitive 或 case_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
。第二個查詢會傳回 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
。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 | +------+