- カテゴリ:
COLLATE¶
元の文字列のコピーを返しますが、元の collation_specification
プロパティではなく、指定された collation_specification
プロパティを使用します。
このコピーは、後続の文字列比較で使用でき、新しい collation_specification
が使用されます。
構文¶
COLLATE
関数は、通常の関数として呼び出すことができます。
COLLATE(<string_expression>, '<collation_specification>')
COLLATE
関数は、 INFIX演算子であるかのように使用できます。
<string_expression> COLLATE '<collation_specification>'
引数¶
string_expression
コピーを作成する文字列です。
collation_specification
これは、文字列のコピーとともに保存する照合を指定します。照合指定子の詳細については、 照合仕様 をご参照ください。
戻り値¶
元の文字列のコピーを返しますが、元の collation_specification
ではなく、指定された collation_specification
プロパティを使用します。
使用上の注意¶
各 VARCHAR
には、その VARCHAR
を別の VARCHAR
と比較するときに使用する照合指定子を保持するプロパティが含まれています。 COLLATE
関数は文字列をコピーしますが、元の仕様ではなく新しい照合仕様をコピーに入れます。文字列自体は変更されず、文字列に関連付けられた照合指定子のみが変更されます。
COLLATE
が挿入演算子として使用される場合、 collation_specification
は一般式ではなく定数文字列でなければなりません。
例¶
次の例は、 COLLATE
関数を呼び出すと、異なる照合仕様の文字列のコピーが返されることを示しています。
テーブルを作成し、行を挿入します。挿入された行の値の照合指定は「sp」(スペイン語)です。
CREATE TABLE collation1 (v VARCHAR COLLATE 'sp'); INSERT INTO collation1 (v) VALUES ('ñ');これは、
COLLATE
関数が文字列を変更しないことを示しています。1列目の元の文字列が小文字であるように、3列目のコピーされた文字列は小文字です。ただし、COLLATE
によって返される値の照合仕様は、「sp」から「sp-upper」に変更されました。これは4列目に表示されます。SELECT v, COLLATION(v), COLLATE(v, 'sp-upper'), COLLATION(COLLATE(v, 'sp-upper')) FROM collation1; +---+--------------+------------------------+-----------------------------------+ | V | COLLATION(V) | COLLATE(V, 'SP-UPPER') | COLLATION(COLLATE(V, 'SP-UPPER')) | |---+--------------+------------------------+-----------------------------------| | ñ | sp | ñ | sp-upper | +---+--------------+------------------------+-----------------------------------+
このクエリは、 COLLATE
によって返される値はまだ小文字の文字列ですが、その文字列を別の文字列と比較する場合は「大文字」の照合指定子が使用されることを示しています。
SELECT v, v = 'ñ' AS "COMPARISON TO LOWER CASE", v = 'Ñ' AS "COMPARISON TO UPPER CASE", COLLATE(v, 'sp-upper'), COLLATE(v, 'sp-upper') = 'Ñ' FROM collation1; +---+--------------------------+--------------------------+------------------------+------------------------------+ | V | COMPARISON TO LOWER CASE | COMPARISON TO UPPER CASE | COLLATE(V, 'SP-UPPER') | COLLATE(V, 'SP-UPPER') = 'Ñ' | |---+--------------------------+--------------------------+------------------------+------------------------------| | ñ | True | False | ñ | True | +---+--------------------------+--------------------------+------------------------+------------------------------+
このコマンドは、ドイツ語(Deutsch)照合を使用して結果をソートします。
SELECT * FROM t1 ORDER BY COLLATE(col1 , 'de');
次の2つのクエリは同じ結果を返します。1つ目は COLLATE
を関数として使用します。2つ目は、挿入演算子として COLLATE
を使用します。
SELECT spanish_phrase FROM collation_demo ORDER BY COLLATE(spanish_phrase, 'utf8');SELECT spanish_phrase FROM collation_demo ORDER BY spanish_phrase COLLATE 'utf8';