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 番目のクエリは 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 |
+------+