COLLATE (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Platform System (PDW) Warehouse in Microsoft Fabric

Definiert eine Sortierung einer Datenbank oder Tabellenspalte, oder einen Umwandlungsvorgang für eine Sortierung, wenn er für einen Zeichenfolgenausdruck angewendet wird. Als Sortierungsname kann entweder der Name einer Windows-Sortierreihenfolge oder ein SQL-Sortierungsname verwendet werden. Wenn Sie während der Datenbankerstellung keine Sortierung angeben, wird der Datenbank die Standardsortierung der Instanz von SQL Server zugewiesen. Wenn Sie während der Tabellenspaltenerstellung keine Sortierung angeben, wird der Spalte die Standardsortierung der Datenbank zugewiesen.

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 werden soll. collation_name kann nur ein bestimmter Windows_collation_name oder ein SQL_collation_name 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 einen Windows-Sortierungsnamen.

SQL_collation_name ist der Name für einen SQL Server-Sortierungsnamen.

Hinweis

In Microsoft Fabric ist die einzige Sortierung zulässig: Latin1_General_100_BIN2_UTF8.

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

Hinweise

Die COLLATE-Klausel kann auf mehreren Ebenen angegeben werden. Diese umfassen Folgendes:

  1. Erstellen oder Ändern einer Datenbank.

    Sie können die COLLATE-Klausel der Anweisungen CREATE DATABASE oder ALTER DATABASE 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.

    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.

  2. Erstellen oder Ändern einer Tabellenspalte.

    Sie können mithilfe der COLLATE-Klausel der Anweisungen CREATE TABLE oder ALTER TABLE 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.

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

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 gilt nur für die Datentypen char, varchar, text, nchar, nvarchar und ntext.

COLLATE verwendet collate_name, um den Namen der SQL Server-Sortierung oder der Windows-Sortierung anzugeben, die auf den Ausdruck, die Spaltendefinition oder die Datenbankdefinition angewendet werden soll. collation_name kann nur ein bestimmter Windows_collation_name oder ein SQL_collation_name sein und der Parameter muss einen Literalwert enthalten. collation_name kann nicht durch eine Variable oder einen Ausdruck dargestellt werden.

Sortierungen werden außer beim Setup in der Regel durch den Sortierungsnamen identifiziert. 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.

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 name, description
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.

Hinweis

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

Beispiele

A. Angeben einer Sortierung beim Verwenden von SELECT

Im folgenden Beispiel wird eine einfache Tabelle erstellt, und 4 Zeilen werden eingefügt. Dann werden im Beispiel zwei Sortierungen bei der Auswahl von Daten aus der Tabelle angewendet, um zu zeigen, wie Chiapas unterschiedlich sortiert wird.

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.

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

Dies sind die Ergebnisse der zweiten Abfrage.

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

B. Weitere Beispiele

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.

Siehe auch