COLLATE (Transact-SQL)

Eine Klausel, die auf eine Datenbankdefinition oder eine Spaltendefinition angewendet werden kann, um die Sortierung zu definieren, oder auf einen Zeichenfolgenausdruck, um eine Sortierungsumwandlung anzuwenden.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • collation_name
    Der Name der Sortierung, die auf den Ausdruck, die Spaltendefinition oder die Datenbankdefinition angewendet wird. collation_name kann nur ein angegebener Windows_collation_name-Wert oder ein SQL_collation_name-Wert sein. collation_name muss ein Literalwert sein. collation_name kann nicht durch eine Variable oder einen Ausdruck dargestellt werden.

    Windows_collation_name ist der Name für eine Windows-Sortierung.

    SQL_collation_name ist der Name für eine SQL Server-Sortierung.

    Bei Anwendung einer Sortierung auf Datenbankdefinitionsebene können Nur-Unicode-Windows-Sortierungen nicht mit der COLLATE-Klausel verwendet werden.

  • database_default
    Bewirkt, dass die COLLATE-Klausel die Sortierung der aktuellen Datenbank erbt.

Hinweise

Die COLLATE-Klausel kann auf mehreren Ebenen angegeben werden. Dabei handelt es sich um die folgenden Funktionen:

  1. Erstellen oder Ändern einer Datenbank.

    Sie können die COLLATE-Klausel der CREATE DATABASE- oder ALTER DATABASE-Anweisung verwenden, um die Standardsortierung der Datenbank anzugeben. Sie können eine Sortierung auch dann angeben, wenn Sie eine Datenbank mithilfe von SQL Server Management Studio erstellen. Wenn Sie keine Sortierung angeben, wird der Datenbank die Standardsortierung der Instanz von SQL Server zugewiesen.

    HinweisHinweis

    Windows-Nur-Unicode-Sortierungen 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. Sie können nicht mit der COLLATE-Klausel verwendet werden, um die Sortierung einer Datenbank oder Serverinstanz zu ändern.

  2. Erstellen oder Ändern einer Tabellenspalte.

    Sie können mithilfe der COLLATE-Klausel der CREATE TABLE oder ALTER TABLE-Anweisung für jede Zeichenfolgenspalte eine Sortierung angeben. Sie können eine Sortierung auch dann angeben, wenn Sie eine Tabelle mithilfe von SQL Server Management Studio erstellen. Wenn Sie keine Sortierung angeben, wird der Spalte die Standardsortierung der Datenbank zugewiesen.

    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.

  3. Umwandeln der Sortierung eines Ausdrucks.

    Sie können die COLLATE-Klausel verwenden, um einen Zeichenausdruck auf eine bestimmte Sortierung anzuwenden. Zeichenliteralen und Variablen wird die Standardsortierung der aktuellen Datenbank zugewiesen. Spaltenverweisen wird die Definitionssortierung der Spalte zugewiesen. Informationen zur Sortierung eines Ausdrucks finden Sie unter Rangfolge von Sortierungen (Transact-SQL).

Die Sortierung eines Bezeichners hängt von der Ebene ab, auf der er definiert ist. Bezeichnern von Objekten auf Instanzebene, wie z. B. Anmeldenamen und Datenbanknamen, wird die Standardsortierung der Instanz zugewiesen. Bezeichnern von Objekten innerhalb einer Datenbank, wie z. B. Tabellen, Sichten und Spaltennamen, wird die Standardsortierung der Datenbank zugewiesen. 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. Weitere Informationen finden Sie unter Bezeichner.

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. Die Bezeichner von Variablen, GOTO-Marken, temporär gespeicherten Prozeduren und temporären Tabellen befinden sich in der Standardsortierung der Serverinstanz.

Die COLLATE-Klausel kann nur für die Datentypen char, varchar, text, nchar, nvarchar und ntext verwendet werden.

COLLATE verweist mit collate_name auf den Namen der SQL Server-Sortierung oder der Windows-Sortierung, die auf den Ausdruck, die Spaltendefinition oder die Datenbankdefinition angewendet werden soll. collation_name muss ein angegebener Windows_collation_name oder ein SQL_collation_name sein, und der Parameter muss einen Literalwert enthalten. collation_name darf nicht durch eine Variable oder einen Ausdruck dargestellt werden.

Sortierungen werden außer beim Setup in der Regel durch den Sortierungsnamen identifiziert. Beim Setup geben Sie stattdessen den Sortierungskennzeichner (das Gebietsschema) für Windows-Sortierungen und dann die Sortierungsoptionen an, z. B. Unterscheidung nach Groß- und Kleinschreibung und Akzenten.

Sie können die fn_helpcollations-Systemfunktion ausführen, um eine Liste aller gültigen Namen für Windows- und SQL Server-Sortierungen abzurufen:

SELECT *
FROM fn_helpcollations()

SQL Server unterstützt nur Codepages, die vom zugrunde liegenden Betriebssystem unterstützt werden. Wenn Sie eine Aktion ausführen, die von Sortierungen abhängt, muss die SQL Server-Sortierung, die von dem Objekt verwendet wird, auf das verwiesen wird, eine Codepage verwenden, die vom Betriebssystem des Computers unterstützt wird. Mögliche Aktionen sind:

  • Angeben einer Standardsortierung für eine Datenbank, wenn Sie die Datenbank erstellen oder ändern.

  • Angeben einer Sortierung für eine Spalte, wenn Sie eine Tabelle erstellen oder ändern.

  • 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.

    Codepageübersetzungen werden für die Datentypen char und varchar, nicht jedoch für den text-Datentyp unterstützt. Datenverlust während der Codepageübersetzung wird nicht gemeldet.

Wenn die angegebene Sortierung oder die Sortierung des Objekts, auf das verwiesen wird, eine Codepage verwendet, die nicht von Windows unterstützt wird, gibt SQL Server einen Fehler aus.

Beispiele

A. Angeben der Sortierung während eines Auswahlvorgangs

Im folgenden Beispiel wird eine einfache Tabelle erstellt, und es werden vier Zeilen eingefügt. Im Beispiel werden dann zwei Sortierungen beim Auswählen von Daten aus der Tabelle angewendet, um die unterschiedliche Sortierung von Chiapas zu veranschaulichen.

CREATE TABLE Locations
(Place varchar(15) NOT NULL);
GO
INSERT Locations(Place) VALUES ('Chiapas');
INSERT Locations(Place) VALUES ('Colima');
INSERT Locations(Place) VALUES ('Cinco Rios');
INSERT Locations(Place) VALUES ('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

B. Zusätzliche Beispiele

Zusätzliche Beispiele, bei denen COLLATE eingesetzt wird, finden Sie unter CREATE DATABASE (Transact-SQL) im Beispiel G. Erstellen einer Datenbank, Angeben eines Sortierungsnamens und Angeben von Optionen und unter ALTER TABLE (Transact-SQL) im Beispiel V. Ändern von Spaltensortierungen.