Freigeben über


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 SQL Server-Instanz zugewiesen.

    Hinweis

    Windows Unicode-only-Sortierungen können nur mit der COLLATE-Klausel verwendet werden, um Sortierungen auf die nchar-, nvarcharund ntext Datentypen auf Spaltenebene und Daten auf 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 die Spalte der Standardsortierung der Datenbank zugewiesen.

    Sie können auch die Option database_default in der COLLATE-Klausel verwenden, um anzugeben, dass eine Spalte in einer temporären Tabelle den Sortierstandard der aktuellen Benutzerdatenbank für die Verbindung anstelle von tempdbverwendet.

  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 sie 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 Sortierung zwischen Groß- und Kleinschreibung zwei Tabellen mit unterschiedlichen Namen erstellt werden, aber nicht in einer Datenbank mit Sortierung ohne Groß-/Kleinschreibung erstellt werden. 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 bei Codeseitenübersetzungen 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 a 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
-- Using LIKE
SELECT Place FROM Locations
WHERE Place COLLATE Latin1_General_CI_AS LIKE 'C%' ASC; 
GO

Dies sind die Ergebnisse der ersten SELECT Abfrage.

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

Dies sind die Ergebnisse der zweiten SELECt Abfrage.

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

Hier sind die Ergebnisse der dritten SELECt Abfrage.

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

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.