COLLATE 関数 - Amazon Redshift

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 になります。2 番目のクエリは 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 になります。2 番目のクエリは john のみを返します。

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