COLLATE (Transact-SQL)

更新 : 2005 年 12 月 5 日

データベース定義または列定義に適用して照合順序を定義したり、文字列式に適用して照合順序キャストを適用することができる句です。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

COLLATE { <collation_name> | database_default }
<collation_name> :: = 
     { Windows_collation_name } | { SQL_collation_name }

引数

  • collation_name
    式、列定義、またはデータベース定義に適用する照合順序の名前を指定します。collation_name に指定できるのは、指定された Windows_collation_name または SQL_collation_name だけです。collation_name はリテラル値である必要があります。collation_name を変数または式で表すことはできません。

    Windows_collation_nameWindows 照合順序名の照合順序名です。

    SQL_collation_nameSQL 照合順序名の照合順序名です。

  • database_default
    COLLATE 句によって、現在のデータベースの照合順序が継承されます。

解説

COLLATE 句は、さまざまなレベルで指定できます。指定できるレベルは次のとおりです。

  1. データベースの作成または変更
    CREATE DATABASE または ALTER DATABASE ステートメントの COLLATE 句を使用して、データベースの既定の照合順序を指定できます。SQL Server Management Studio を使用してデータベースを作成するときに、照合順序も指定できます。照合順序を指定しない場合、SQL Server のインスタンスの既定の照合順序がデータベースに指定されます。
  2. テーブル列の作成または変更
    CREATE TABLE または ALTER TABLE ステートメントの COLLATE 句を使用して、文字型の各列に対して照合順序を指定できます。SQL Server Management Studio を使用してテーブルを作成するときに、照合順序も指定できます。照合順序を指定しない場合、列には、データベースの既定の照合順序が指定されます。
    また、COLLATE 句の database_default オプションを使用して、一時テーブルの列で、tempdb の代わりに、接続に対する現在のユーザー データベースの既定の照合順序が使用されるように指定することもできます。
  3. 式の照合順序のキャスト
    COLLATE 句を使用して、文字式を特定の照合順序にキャストできます。文字リテラルと変数には、現在のデータベースの既定の照合順序が指定されます。列参照には、列の既定の照合順序が指定されます。式の照合順序については、「照合順序の優先順位 (Transact-SQL)」を参照してください。

識別子の照合順序は、識別子が定義されているレベルによって異なります。ログイン名やデータベース名など、インスタンスレベルのオブジェクトの識別子には、インスタンスの既定の照合順序が指定されます。テーブル名、ビュー名、列名など、データベース内のオブジェクトの識別子には、データベースの既定の照合順序が指定されます。たとえば、大文字と小文字においてのみ名前が異なる 2 つのテーブルを作成する場合、大文字と小文字が区別される照合順序が指定されたデータベースでは作成できますが、大文字と小文字が区別されない照合順序が指定されたデータベースでは作成できません。詳細については、「識別子」を参照してください。

接続コンテキストが 1 つのデータベースに関連付けられたときに変数、GOTO ラベル、一時ストアド プロシージャおよび一時テーブルを作成し、コンテキストを別のデータベースに切り替えたときに、それらを参照することができます。変数、GOTO ラベル、一時ストアド プロシージャ、および一時テーブルの各識別子は、インスタンスの既定の照合順序に従います。

COLLATE 句は、charvarchartextncharnvarchar、および ntext データ型に対してだけ適用できます。

照合順序は、通常、照合順序名によって識別します。ただし、例外としては、セットアップ時に Windows 照合順序の照合順序名を指定する代わりに照合順序指定子を指定し、バイナリ順の並べ替え、あるいは大文字と小文字、アクセントが区別されるまたは区別されない辞書順の並べ替えをチェック ボックスを使用して指定する場合があります。

システム関数の fn_helpcollations を実行すると、Windows 照合順序および SQL 照合順序のすべての有効な照合順序名の一覧を取得できます。

SELECT *
FROM fn_helpcollations()

SQL Server は、動作しているオペレーティング システムがサポートしているコード ページのみをサポートすることができます。照合順序に依存するアクションを実行する場合、参照されるオブジェクトが使用する SQL Server 照合順序は、コンピュータ上で実行されているオペレーティング システムがサポートしているコード ページを使用する必要があります。このようなアクションには、次のものがあります。

  • データベースの作成または変更時に、データベースの既定の照合順序を指定する。
  • テーブルの作成または変更時に、列の照合順序を指定する。
  • データベースの復元または接続を行う場合、データベースの既定の照合順序、およびデータベース内の char 型、varchar 型、および text 型の任意の列またはパラメータの照合順序は、オペレーティング システムでサポートされている必要があります。
    コード ページ変換は char および varchar データ型に対してはサポートされていますが、text データ型に対してはサポートされていません。コード ページ変換時のデータ損失はレポートされません。

指定した照合順序、または参照先のオブジェクトで使用される照合順序で、Windows でサポートされていないコード ページが使用されていると、SQL Server でエラーが発生します。

参照

関連項目

ALTER TABLE (Transact-SQL)
照合順序の優先順位 (Transact-SQL)
定数 (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
table (Transact-SQL)

その他の技術情報

照合順序の使用
Unicode データを使用した作業

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2005 年 12 月 5 日

追加内容
  • collation_name 引数の説明に、collation_name がリテラル値である必要があることと、collation_name を変数または式で表すことはできないことを追加。