Dela via


COLLATE (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Warehouse i Microsoft Fabric

Definierar en sortering av en databas eller tabellkolumn, eller en sorteringsåtgärd när den tillämpas på teckensträngsuttryck. Sorteringsnamnet kan vara antingen ett Windows-sorteringsnamn eller ett SQL-sorteringsnamn. Om den inte anges när databasen skapas tilldelas databasen standardsortering av SQL Server-instansen. Om den inte anges när tabellkolumnen skapas tilldelas kolumnen standardsortering av databasen.

Transact-SQL syntaxkonventioner

Syntax

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

Argument

collation_name Är namnet på sorteringen som ska tillämpas på uttrycket, kolumndefinitionen eller databasdefinitionen. collation_name kan bara vara en angiven Windows_collation_name eller en SQL_collation_name. collation_name måste vara ett literalvärde. collation_name kan inte representeras av en variabel eller ett uttryck.

Windows_collation_name är sorteringsnamnet för ett Windows-sorteringsnamn.

SQL_collation_name är sorteringsnamnet för ett SQL Server-sorteringsnamn.

Not

I Microsoft Fabric är den enda sortering som tillåts: Latin1_General_100_BIN2_UTF8.

database_default Gör att COLLATE-satsen ärver sortering av den aktuella databasen.

Anmärkningar

COLLATE-satsen kan anges på flera nivåer. Dessa inkluderar följande:

  1. Skapa eller ändra en databas.

    Du kan använda COLLATE-satsen i instruktionen CREATE DATABASE eller ALTER DATABASE för att ange standardsortering av databasen. Du kan också ange en sortering när du skapar en databas med SQL Server Management Studio. Om du inte anger någon sortering tilldelas databasen standardsortering av SQL Server-instansen.

    Not

    Endast Windows Unicode-sortering kan endast användas med COLLATE-satsen för att tillämpa sortering på nchar, nvarcharoch ntext datatyper på kolumn- och uttrycksnivådata. Dessa kan inte användas med COLLATE-satsen för att definiera eller ändra sortering av en databas eller serverinstans.

  2. Skapa eller ändra en tabellkolumn.

    Du kan ange sorteringar för varje teckensträngskolumn med hjälp av COLLATE-satsen i instruktionen CREATE TABLE eller ALTER TABLE. Du kan också ange en sortering när du skapar en tabell med SQL Server Management Studio. Om du inte anger någon sortering tilldelas kolumnen standardsortering av databasen.

    Du kan också använda alternativet database_default i COLLATE-satsen för att ange att en kolumn i en tillfällig tabell använder sorteringsstandarden för den aktuella användardatabasen för anslutningen i stället för tempdb.

  3. Gjuta sortering av ett uttryck.

    Du kan använda COLLATE-satsen för att tillämpa ett teckenuttryck på en viss sortering. Teckenliteraler och variabler tilldelas standardsortering av den aktuella databasen. Kolumnreferenser tilldelas definitionssortering för kolumnen.

Sortering av en identifierare beror på vilken nivå den definieras på. Identifierare för objekt på instansnivå, till exempel inloggningar och databasnamn, tilldelas standardsortering av instansen. Identifierare för objekt i en databas, till exempel tabeller, vyer och kolumnnamn, tilldelas standardsortering av databasen. Två tabeller med olika namn kan till exempel bara skapas i en databas med skiftlägeskänslig sortering, men kanske inte skapas i en databas med skiftlägesokänslig sortering. Mer information finns i Databasidentifierare.

Variabler, GOTO-etiketter, tillfälliga lagrade procedurer och tillfälliga tabeller kan skapas när anslutningskontexten är associerad med en databas och sedan refereras till när kontexten har växlats till en annan databas. Identifierarna för variabler, GOTO-etiketter, tillfälliga lagrade procedurer och tillfälliga tabeller finns i standardsortering av serverinstansen.

COLLATE-satsen kan endast användas för char, varchar, text, nchar, nvarcharoch ntext datatyper.

COLLATE använder collate_name för att referera till namnet på antingen SQL Server-sortering eller Windows-sortering som ska tillämpas på uttrycket, kolumndefinitionen eller databasdefinitionen. collation_name kan bara vara en angiven Windows_collation_name eller en SQL_collation_name och parametern måste innehålla ett literalvärde. collation_name kan inte representeras av en variabel eller ett uttryck.

Sorteringar identifieras vanligtvis med ett sorteringsnamn, förutom i installationsprogrammet. I installationsprogrammet anger du i stället rotsorteringsdesignatorn (sorteringsspråket) för Windows-sortering och anger sedan sorteringsalternativ som är känsliga eller okänsliga för skiftläge eller accenter.

Du kan köra systemfunktionen fn_helpcollations för att hämta en lista över alla giltiga sorteringsnamn för Windows-sortering och SQL Server-sortering:

SELECT name, description
FROM fn_helpcollations();

SQL Server kan endast stödja kodsidor som stöds av det underliggande operativsystemet. När du utför en åtgärd som är beroende av sortering måste DEN SQL Server-sortering som används av det refererade objektet använda en kodsida som stöds av operativsystemet som körs på datorn. Dessa åtgärder kan innehålla följande:

  • Ange en standardsortering för en databas när du skapar eller ändrar databasen.
  • Ange en sortering för en kolumn när du skapar eller ändrar en tabell.
  • När du återställer eller kopplar en databas måste standardsortering av databasen och sortering av alla tecken, varcharoch text kolumner eller parametrar i databasen stödjas av operativsystemet.

Not

Kodsideöversättningar stöds för tecken och varchar datatyper, men inte för text datatyp. Dataförlust vid kodsideöversättningar rapporteras inte.

Om sortering som angetts eller sortering som används av det refererade objektet använder en kodsida som inte stöds av Windows, visar SQL Server ett fel.

Exempel

A. Ange sortering under en SELECT

I följande exempel skapas en enkel tabell och 4 rader infogas. Sedan tillämpar exemplet två sorteringar när du väljer data från tabellen, vilket visar hur Chiapas sorteras på olika sätt.

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

Här är resultatet från den första SELECT frågan.

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

Här är resultatet från den andra SELECt frågan.

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

Här är resultatet från den tredje SELECt frågan.

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

B. Ytterligare exempel

Ytterligare exempel som använder COLLATEfinns i CREATE DATABASE example G. Creating a database and specifying a collation name and options, and ALTER TABLE example V. Changing column collation.