COLLATE (Transact-SQL)COLLATE (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

データベースまたはテーブル列の照合順序、または文字列式に適用されたときの照合順序のキャスト操作を定義します。Defines a collation of a database or table column, or a collation cast operation when applied to character string expression. 照合順序名には、Windows 照合順序名または SQL 照合順序名を指定できます。Collation name can be either a Windows collation name or a SQL collation name. データベースの作成時に指定しない場合は、データベースに SQL ServerSQL Server インスタンスの既定の照合順序が割り当てられます。If not specified during database creation, the database is assigned the default collation of the instance of SQL ServerSQL Server. テーブル列の作成時に指定しない場合、データベースの既定の照合順序に列が割り当てられます。If not specified during table column creation, the column is assigned the default collation of the database.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

引数Arguments

collation_name 式、列定義、またはデータベース定義に適用する照合順序の名前です。collation_name Is the name of the collation to be applied to the expression, column definition, or database definition. collat​​ion_name には、指定された Windows_collat​​ion_name または SQL_collat​​ion_name のみを指定できます。collation_name can be only a specified Windows_collation_name or a SQL_collation_name. collation_name はリテラル値である必要があります。collation_name must be a literal value. collation_name を変数または式で表すことはできません。collation_name cannot be represented by a variable or expression.

Windows_collation_name は、「Windows 照合順序名」の照合順序名です。Windows_collation_name is the collation name for a Windows Collation Name.

SQL_collation_name は、「SQL Server 照合順序名」の照合順序名です。SQL_collation_name is the collation name for a SQL Server Collation Name.

database_default COLLATE 句によって、現在のデータベースの照合順序が継承されます。database_default Causes the COLLATE clause to inherit the collation of the current database.

RemarksRemarks

COLLATE 句は、さまざまなレベルで指定できます。The COLLATE clause can be specified at several levels. その一部を次に示します。These include the following:

  1. データベースの作成または変更Creating or altering a database.

    CREATE DATABASE または ALTER DATABASE ステートメントの COLLATE 句を使用して、データベースの既定の照合順序を指定できます。You can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default collation of the database. SQL Server Management StudioSQL Server Management Studio を使用してデータベースを作成するときに、照合順序も指定できます。You can also specify a collation when you create a database using SQL Server Management StudioSQL Server Management Studio. 照合順序を指定しない場合、SQL ServerSQL Server のインスタンスの既定の照合順序がデータベースに指定されます。If you do not specify a collation, the database is assigned the default collation of the instance of SQL ServerSQL Server.

    注意

    Unicode 専用の Windows 照合順序は、COLLATE 句で ncharnvarchar、および ntext の各データ型を列レベルおよび式レベルのデータに適用する場合にのみ使用できます。COLLATE 句でデータベースまたはサーバー インスタンスの照合順序を定義または変更するために使用することはできません。Windows Unicode-only collations can only be used with the COLLATE clause to apply collations to the nchar, nvarchar, and ntext data types on column-level and expression-level data; these cannot be used with the COLLATE clause to define or change the collation of a database or server instance.

  2. テーブル列の作成または変更Creating or altering a table column.

    CREATE TABLE または ALTER TABLE ステートメントの COLLATE 句を使用して、文字型の各列に対して照合順序を指定できます。You can specify collations for each character string column using the COLLATE clause of the CREATE TABLE or ALTER TABLE statement. SQL Server Management StudioSQL Server Management Studio を使用してテーブルを作成するときに、照合順序も指定できます。You can also specify a collation when you create a table using SQL Server Management StudioSQL Server Management Studio. 照合順序を指定しない場合、列には、データベースの既定の照合順序が指定されます。If you do not specify a collation, the column is assigned the default collation of the database.

    また、COLLATE 句の database_default オプションを使用して、一時テーブルの列で、tempdb の代わりに、接続に対する現在のユーザー データベースの既定の照合順序が使用されるように指定することもできます。You can also use the database_default option in the COLLATE clause to specify that a column in a temporary table use the collation default of the current user database for the connection instead of tempdb.

  3. 式の照合順序のキャストCasting the collation of an expression.

    COLLATE 句を使用して、文字式を特定の照合順序に適用できます。You can use the COLLATE clause to apply a character expression to a certain collation. 文字リテラルと変数には、現在のデータベースの既定の照合順序が指定されます。Character literals and variables are assigned the default collation of the current database. 列参照には、列の既定の照合順序が指定されます。Column references are assigned the definition collation of the column.

識別子の照合順序は、識別子が定義されているレベルによって異なります。The collation of an identifier depends on the level at which it is defined. ログイン名やデータベース名など、インスタンスレベルのオブジェクトの識別子には、インスタンスの既定の照合順序が指定されます。Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. テーブル名、ビュー名、列名など、データベース内のオブジェクトの識別子には、データベースの既定の照合順序が指定されます。Identifiers of objects within a database, such as tables, views, and column names, are assigned the default collation of the database. たとえば、大文字と小文字においてのみ名前が異なる 2 つのテーブルを作成する場合、大文字と小文字が区別される照合順序が指定されたデータベースでは作成できますが、大文字と小文字が区別されない照合順序が指定されたデータベースでは作成できません。For example, two tables with names different only in case may be created in a database with case-sensitive collation, but may not be created in a database with case-insensitive collation. 詳細については、「データベース識別子」を参照してください。For more information, see Database Identifiers.

接続コンテキストが 1 つのデータベースに関連付けられたときに変数、GOTO ラベル、一時ストアド プロシージャおよび一時テーブルを作成し、コンテキストを別のデータベースに切り替えたときに、それらを参照することができます。Variables, GOTO labels, temporary stored procedures, and temporary tables can be created when the connection context is associated with one database, and then referenced when the context has been switched to another database. 変数、GOTO ラベル、一時ストアド プロシージャ、および一時テーブルの各識別子は、サーバー インスタンスの既定の照合順序に従います。The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the server instance.

COLLATE 句は、charvarchartextncharnvarchar、および ntext データ型にのみ適用できます。The COLLATE clause can be applied only for the char, varchar, text, nchar, nvarchar, and ntext data types.

COLLATE は collate_name を使用して、式、列定義、データベース定義に適用される SQL ServerSQL Server 照合順序または Windows 照合順序のいずれかの名前を参照します。COLLATE uses collate_name to refer to the name of either the SQL ServerSQL Server collation or the Windows collation to be applied to the expression, column definition, or database definition. collation_name に指定できるのは、指定された Windows_collation_name または SQL_collation_name だけで、パラメーターにはリテラル値を含める必要があります。collation_name can be only a specified Windows_collation_name or a SQL_collation_name and the parameter must contain a literal value. collation_name を変数または式で表すことはできません。collation_name cannot be represented by a variable or expression.

照合順序は、通常、照合順序名によって識別します。ただし、セットアップ時は例外です。Collations are generally identified by a collation name, except in Setup. セットアップ時には、Windows 照合順序にルート照合順序指定子 (照合ロケール) を指定してから、大文字と小文字の区別やアクセントの区別に関する並べ替えオプションを指定します。In Setup, you instead specify the root collation designator (the collation locale) for Windows collations, and then specify sort options that are sensitive or insensitive to case or accents.

システム関数の fn_helpcollations を実行すると、Windows 照合順序および SQL Server 照合順序のすべての有効な照合順序名の一覧を取得できます。You can execute the system function fn_helpcollations to retrieve a list of all the valid collation names for Windows collations and SQL Server collations:

SELECT name, description
FROM fn_helpcollations();

SQL ServerSQL Server は、動作しているオペレーティング システムがサポートしているコード ページのみをサポートすることができます。can support only code pages that are supported by the underlying operating system. 照合順序に依存するアクションを実行する場合、参照されるオブジェクトが使用する SQL ServerSQL Server 照合順序は、コンピューター上で実行されているオペレーティング システムがサポートしているコード ページを使用する必要があります。When you perform an action that depends on collations, the SQL ServerSQL Server collation used by the referenced object must use a code page supported by the operating system running on the computer. このようなアクションには、次のものがあります。These actions can include the following:

  • データベースの作成または変更時に、データベースの既定の照合順序を指定する。Specifying a default collation for a database when you create or alter the database.
  • テーブルの作成または変更時に、列の照合順序を指定する。Specifying a collation for a column when you create or alter a table.
  • データベースの復元または接続を行う場合、データベースの既定の照合順序、およびデータベース内の char 型、varchar 型、および text 型の任意の列またはパラメーターの照合順序は、オペレーティング システムでサポートされている必要があります。When restoring or attaching a database, the default collation of the database and the collation of any char, varchar, and text columns or parameters in the database must be supported by the operating system.

注意

Azure SQL データベースAzure SQL Database マネージド インスタンス サーバーの照合順序は、SQL_Latin1_General_CP1_CI_AS であり、変更できません。managed instance server collation is SQL_Latin1_General_CP1_CI_AS and cannot be changed.

コード ページ変換は char および varchar データ型に対してはサポートされていますが、text データ型に対してはサポートされていません。Code page translations are supported for char and varchar data types, but not for text data type. コード ページ変換時のデータ損失はレポートされません。Data loss during code page translations is not reported.

指定した照合順序、または参照先のオブジェクトで使用される照合順序で、Windows でサポートされていないコード ページが使用されていると、SQL ServerSQL Server でエラーが表示されます。If the collation specified or the collation used by the referenced object uses a code page not supported by Windows, SQL ServerSQL Server displays an error.

使用例Examples

A.A. SELECT 時に照合順序を指定するSpecifying collation during a SELECT

次の例では、単純なテーブルを作成し、4 つの行を挿入します。The following example creates a simple table and inserts 4 rows. 次に、テーブルからデータを選択するときに 2 つの照合順序を適用して、Chiapas が異なる方法で格納されることを示します。Then the example applies two collations when selecting data from the table, demonstrating how Chiapas is sorted differently.

CREATE TABLE Locations
(Place varchar(15) NOT NULL);
GO
INSERT Locations(Place) VALUES ('Chiapas'),('Colima')
                             , ('Cinco Rios'), ('California');
GO
--Apply an typical collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Latin1_General_CS_AS_KS_WS ASC;
GO
-- Apply a Spanish collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Traditional_Spanish_ci_ai ASC;
GO

最初のクエリからの結果を次に示します。Here are the results from the first query.

Place
-------------
California
Chiapas
Cinco Rios
Colima

2 番目のクエリからの結果を次に示します。Here are the results from the second query.

Place
-------------
California
Cinco Rios
Colima
Chiapas

B.B. その他の例Additional examples

COLLATE を使用するその他の例については、「CREATE DATABASE」の例「G. データベースを作成し、照合順序名とオプションを指定する」と「ALTER TABLE」の例「V. 列の照合順序を変更する」を参照してください。For additional examples that use COLLATE, see CREATE DATABASE example G. Creating a database and specifying a collation name and options, and ALTER TABLE example V. Changing column collation.

参照See Also