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.
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 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:
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.
Hinweis 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.
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.
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 kann nur für die Datentypen char, varchar, text, nchar, nvarchar und ntext verwendet werden.
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. 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 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.
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, zeigt SQL Server einen Fehler an.
Beispiele
A.Angeben einer Sortierung während einer Auswahl
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.Zusätzliche Beispiele
Zusätzliche Beispiele zur Verwendung von COLLATE finden Sie unter CREATE DATABASE (Transact-SQL) in Beispiel G. Erstellen einer Datenbank, Angeben eines Sortierungsnamens und Optionen, und unter ALTER TABLE (Transact-SQL) in Beispiel V. Ändern der Spaltensortierung.
Siehe auch
Verweis
Rangfolge von Sortierungen (Transact-SQL)
CREATE DATABASE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)