Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事
COLLATE 関数
COLLATE 関数は、文字列の列または表現に関する照合をオーバーライドします。
データベースの照合を使用してテーブルを作成する方法については、「CREATE TABLE」を参照してください。
データベース照合を使用してデータベースを作成する方法については、「CREATE DATABASE」を参照してください。
構文
COLLATE(string, 'case_sensitive' | 'cs' | 'case_insensitive' | 'ci');
引数
- string
-
上書きする先の文字列の列または式です。
- 'case_sensitive' | 'cs' | 'case_insensitive' | 'ci'
-
照合名を示す文字列定数です。Amazon Redshift は、このパラメータに対して以下の値のみをサポートしています。
case_sensitive
cs
case_insensitive
ci (クリーンスレートインストール
case_sensitive と cs は互換性があり、同じ結果が得られます。同様に、case_insensitive と ci は互換性があり、同じ結果が得られます。
戻り型
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 番目のクエリは 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 になります。2 番目のクエリは john のみを返します。
SELECT * FROM A WHERE col1 = 'john';+------+ | col1 | +------+ | john | | JOHN | +------+SELECT * FROM A WHERE COLLATE(col1, 'case_sensitive') = 'john';+------+ | col1 | +------+ | john | +------+