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

GILT FÜR: jaSQL Server (ab 2008) jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Definiert eine Sortierung einer Datenbank oder Tabellenspalte, oder einen Umwandlungsvorgang für eine Sortierung, wenn er für einen Zeichenfolgenausdruck angewendet wird.Defines a collation of a database or table column, or a collation cast operation when applied to character string expression. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden.Collation name can be either a Windows collation name or a SQL collation name. Wenn Sie während der Datenbankerstellung keine Sortierung angeben, wird der Datenbank die Standardsortierung der Instanz von SQL ServerSQL Server zugewiesen.If not specified during database creation, the database is assigned the default collation of the instance of SQL ServerSQL Server. Wenn Sie während der Tabellenspaltenerstellung keine Sortierung angeben, wird der Spalte die Standardsortierung der Datenbank zugewiesen.If not specified during table column creation, the column is assigned the default collation of the database.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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

ArgumenteArguments

collation_name Der Name der Sortierung, die auf den Ausdruck, die Spaltendefinition oder die Datenbankdefinition angewendet werden soll.collation_name Is the name of the collation to be applied to the expression, column definition, or database definition. collation_name kann nur ein bestimmter Windows_collation_name oder ein SQL_collation_name sein.collation_name can be only a specified Windows_collation_name or a SQL_collation_name. collation_name muss ein Literalwert sein.collation_name must be a literal value. collation_name kann nicht durch eine Variable oder einen Ausdruck dargestellt werden.collation_name cannot be represented by a variable or expression.

Windows_collation_name ist der Name für einen Windows-Sortierungsnamen.Windows_collation_name is the collation name for a Windows Collation Name.

SQL_collation_name ist der Name für einen SQL Server-Sortierungsnamen.SQL_collation_name is the collation name for a SQL Server Collation Name.

database_default Bewirkt, dass die COLLATE-Klausel die Sortierung der aktuellen Datenbank erbt.database_default Causes the COLLATE clause to inherit the collation of the current database.

RemarksRemarks

Die COLLATE-Klausel kann auf mehreren Ebenen angegeben werden.The COLLATE clause can be specified at several levels. Dabei handelt es sich z. B. um:These include the following:

  1. Erstellen oder Ändern einer Datenbank.Creating or altering a database.

    Sie können die COLLATE-Klausel der Anweisungen CREATE DATABASE oder ALTER DATABASE verwenden, um die Standardsortierung der Datenbank anzugeben.You can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default collation of the database. Sie können eine Sortierung auch dann angeben, wenn Sie eine Datenbank mithilfe von SQL Server Management StudioSQL Server Management Studio erstellen.You can also specify a collation when you create a database using SQL Server Management StudioSQL Server Management Studio. Wenn Sie keine Sortierung angeben, wird der Datenbank die Standardsortierung der Instanz von SQL ServerSQL Server zugewiesen.If you do not specify a collation, the database is assigned the default collation of the instance of SQL ServerSQL Server.

    Hinweis

    Nur-Unicode-Sortierungen von Windows können nur mit der COLLATE-Klausel verwendet werden, um Sortierungen auf die Datentypen nchar, nvarchar und ntext bei Daten auf Spalten- und Ausdrucksebene anzuwenden. Diese können nicht mit der COLLATE-Klausel verwendet werden, um die Sortierung einer Datenbank oder Serverinstanz zu definieren oder zu ändern.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. Erstellen oder Ändern einer Tabellenspalte.Creating or altering a table column.

    Sie können mithilfe der COLLATE-Klausel der Anweisungen CREATE TABLE oder ALTER TABLE für jede Zeichenfolgenspalte eine Sortierung angeben.You can specify collations for each character string column using the COLLATE clause of the CREATE TABLE or ALTER TABLE statement. Sie können eine Sortierung auch dann angeben, wenn Sie eine Tabelle mithilfe von SQL Server Management StudioSQL Server Management Studio erstellen.You can also specify a collation when you create a table using SQL Server Management StudioSQL Server Management Studio. Wenn Sie keine Sortierung angeben, wird der Spalte die Standardsortierung der Datenbank zugewiesen.If you do not specify a collation, the column is assigned the default collation of the database.

    Sie können außerdem die Option database_default in der COLLATE-Klausel verwenden, um anzugeben, dass für eine Spalte einer temporären Tabelle anstelle von tempdb die Standardsortierung der aktuellen Benutzerdatenbank für die Verbindung verwendet wird.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. Umwandeln der Sortierung eines Ausdrucks.Casting the collation of an expression.

    Sie können die COLLATE-Klausel verwenden, um einen Zeichenausdruck auf eine bestimmte Sortierung anzuwenden.You can use the COLLATE clause to apply a character expression to a certain collation. Zeichenliteralen und Variablen wird die Standardsortierung der aktuellen Datenbank zugewiesen.Character literals and variables are assigned the default collation of the current database. Spaltenverweisen wird die Definitionssortierung der Spalte zugewiesen.Column references are assigned the definition collation of the column.

Die Sortierung eines Bezeichners hängt von der Ebene ab, auf der er definiert ist.The collation of an identifier depends on the level at which it is defined. Bezeichnern von Objekten auf Instanzebene, wie z. B. Anmeldenamen und Datenbanknamen, wird die Standardsortierung der Instanz zugewiesen.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. Bezeichnern von Objekten innerhalb einer Datenbank, wie z. B. Tabellen, Sichten und Spaltennamen, wird die Standardsortierung der Datenbank zugewiesen.Identifiers of objects within a database, such as tables, views, and column names, are assigned the default collation of the database. Beispielsweise können in einer Datenbank mit einer Sortierung mit Unterscheidung nach Groß-/Kleinschreibung zwei Tabellen mit gleichen Namen, die sich nur durch verschiedene Groß-/Kleinschreibung unterscheiden, erstellt werden; in einer Datenbank mit einer Sortierung ohne Unterscheidung nach Groß-/Kleinschreibung ist dies jedoch nicht möglich.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. Weitere Informationen finden Sie unter Datenbankbezeichner.For more information, see Database Identifiers.

Variablen, GOTO-Marken, temporär gespeicherte Prozeduren und temporäre Tabellen können erstellt werden, wenn der Verbindungskontext einer Datenbank zugeordnet ist. Anschließend kann darauf verwiesen werden, wenn zum Kontext einer anderen Datenbank gewechselt wurde.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. Die Bezeichner von Variablen, GOTO-Marken, temporär gespeicherten Prozeduren und temporären Tabellen befinden sich in der Standardsortierung der Serverinstanz.The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the server instance.

Die COLLATE-Klausel gilt nur für die Datentypen char, varchar, text, nchar, nvarchar und ntext.The COLLATE clause can be applied only for the char, varchar, text, nchar, nvarchar, and ntext data types.

COLLATE verwendet collate_name, um den Namen der SQL ServerSQL Server-Sortierung oder der Windows-Sortierung anzugeben, die auf den Ausdruck, die Spaltendefinition oder die Datenbankdefinition angewendet werden soll.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 kann nur ein bestimmter Windows_collation_name oder ein SQL_collation_name sein und der Parameter muss einen Literalwert enthalten.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 kann nicht durch eine Variable oder einen Ausdruck dargestellt werden.collation_name cannot be represented by a variable or expression.

Sortierungen werden außer beim Setup in der Regel durch den Sortierungsnamen identifiziert.Collations are generally identified by a collation name, except in Setup. Geben Sie beim Setup stattdessen den Sortierungskennzeichner (das Gebietsschema) für Windows-Sortierungen und dann die Sortierungsoptionen an, z.B. Unterscheidung nach Groß-/Kleinschreibung oder Akzenten.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.

Sie können die fn_helpcollations-Systemfunktion ausführen, um eine Liste aller gültigen Namen für Windows- und SQL Server-Sortierungen abzurufen: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 unterstützt nur Codepages, die vom zugrunde liegenden Betriebssystem unterstützt werden.can support only code pages that are supported by the underlying operating system. Wenn Sie eine Aktion ausführen, die von Sortierungen abhängt, muss die SQL ServerSQL Server-Sortierung, die von dem Objekt verwendet wird, auf das verwiesen wird, eine Codepage verwenden, die vom Betriebssystem des Computers unterstützt wird.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. Mögliche Aktionen sind:These actions can include the following:

  • Angeben einer Standardsortierung für eine Datenbank, wenn Sie die Datenbank erstellen oder ändern.Specifying a default collation for a database when you create or alter the database.
  • Angeben einer Sortierung für eine Spalte, wenn Sie eine Tabelle erstellen oder ändern.Specifying a collation for a column when you create or alter a table.
  • Beim Wiederherstellen oder Anfügen einer Datenbank müssen die Standardsortierung der Datenbank und die Sortierungen aller Spalten und Parameter, die zur Datenbank gehören und den Datentyp char, varchar oder text aufweisen, vom Betriebssystem unterstützt werden.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.

Hinweis

Die von Azure SQL-DatenbankAzure SQL Database verwaltete Instanz für die Serversortierung lautet SQL_Latin1_General_CP1_CI_AS und kann nicht geändert werden.Azure SQL-DatenbankAzure SQL Database managed instance server collation is SQL_Latin1_General_CP1_CI_AS and cannot be changed.

Codepageübersetzungen werden für die Datentypen char und varchar, nicht jedoch für den text-Datentyp unterstützt.Code page translations are supported for char and varchar data types, but not for text data type. Datenverlust während der Codepageübersetzung wird nicht gemeldet.Data loss during code page translations is not reported.

Wenn die angegebene Sortierung oder die Sortierung, die von dem Objekt verwendet wird, auf das verwiesen wird, eine Codepage verwendet, die nicht von Windows unterstützt wird, zeigt SQL ServerSQL Server einen Fehler an.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.

BeispieleExamples

A.A. Angeben einer Sortierung beim Verwenden von SELECTSpecifying collation during a SELECT

Im folgenden Beispiel wird eine einfache Tabelle erstellt, und 4 Zeilen werden eingefügt.The following example creates a simple table and inserts 4 rows. Dann werden im Beispiel zwei Sortierungen bei der Auswahl von Daten aus der Tabelle angewendet, um zu zeigen, wie Chiapas unterschiedlich sortiert wird.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

Dies sind die Ergebnisse der ersten Abfrage.Here are the results from the first query.

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

Dies sind die Ergebnisse der zweiten Abfrage.Here are the results from the second query.

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

B.B. Zusätzliche BeispieleAdditional examples

Zusätzliche Beispiele zur Verwendung von COLLATE finden Sie unter CREATE DATABASE in Beispiel G. Erstellen einer Datenbank und Angeben eines Sortierungsnamens und von Optionen, und unter ALTER TABLE in Beispiel V. Ändern der Spaltensortierung.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.

Weitere InformationenSee Also