COLLATE (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)Raktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Meghatározza egy adatbázis vagy táblaoszlop rendezési módját, illetve a karaktersztring-kifejezésre alkalmazott rendezési műveletet. A rendezés neve lehet Windows-rendezési név vagy SQL-rendezés neve. Ha az adatbázis létrehozásakor nincs megadva, az adatbázishoz az SQL Server-példány alapértelmezett rendezése tartozik. Ha a táblaoszlop létrehozásakor nincs megadva, az oszlop az adatbázis alapértelmezett rendezési eleméhez lesz rendelve.

Transact-SQL szintaxis konvenciói

Szintaxis

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

Érvek

collation_name

A kifejezésre, oszlopdefinícióra vagy adatbázisdefinícióra alkalmazni kívánt rendezés neve. collation_name csak meghatározott Windows_collation_name vagy SQL_collation_namelehet. collation_name literálértéknek kell lennie. collation_name nem jelölhető változó vagy kifejezés.

Windows_collation_name egy Windows-rendezési névrendezési neve.

SQL_collation_name egy SQL Server-rendezési névrendezési neve.

Jegyzet

A Microsoft Fabric Data Warehouse-ban a COLLATE utasítás SELECT záradéka korlátlan, és nem támogatott rendezésekkel is alkalmazható. A Microsoft Fabric Data Warehouse-ban alapértelmezés szerint minden raktár kis- és nagybetűk megkülönböztetésével (CS) rendezési Latin1_General_100_BIN2_UTF8van konfigurálva. A kis- és nagybetűk megkülönböztetése (CI) rendezési is létrehozhat raktárakat.

A COLLATE, CREATE TABLE, ALTER TABLE ADD nullable columnés SELECT INTO (CTAS) utasítások CREATE TABLE AS SELECT záradékával azonban csak támogatott rendezés használható.

database_default A COLLATE záradék örökli az aktuális adatbázis összeállítását.

Megjegyzések

A COLLATE záradék több szinten is meghatározható. Ezek közé tartoznak a következők:

  1. Adatbázis létrehozása vagy módosítása.

    Az COLLATE or ALTER DATABASE utasítás záradékát CREATE DATABASE használhatod az adatbázis alapértelmezett összeállításának megadásához. Rendezést is megadhat, ha adatbázist hoz létre az SQL Server Management Studióval. Ha nem ad meg rendezést, a rendszer az adatbázishoz rendeli hozzá az SQL Server-példány alapértelmezett rendezést.

    Jegyzet

    A Windows Unicode csak COLLATE összeállításai csak a záradékbal használhatók nchar, nvarchar és ntext adattípusokra oszlop- és kifejezésszintű adatokon; ezek nem használhatók a COLLATE záradékhoz adatbázis vagy szerver példányok összeállításának definiálására vagy megváltoztatására.

  2. Táblaoszlop létrehozása vagy módosítása.

    Minden karakterlánc oszlophoz az or ALTER TABLE utasítás mellékmellékmondajával COLLATECREATE TABLE megadhatod a kollációkat. Rendezést akkor is megadhat, ha táblát hoz létre az SQL Server Management Studióval. Ha nem ad meg rendezést, az oszlop az adatbázis alapértelmezett rendezési eleméhez lesz rendelve.

    Használhatod a database_defaultCOLLATE záradékban található opciót is, hogy egy ideiglenes tábla oszlopa a jelenlegi felhasználói adatbázis alapértelmezettségét használja a kapcsolat helyett tempdb.

  3. Kifejezés rendezési sorrendjének kiosztása.

    A COLLATE záradékot használhatod egy karakterkifejezés alkalmazására egy adott kollációra. A karakterkonstansok és a változók az aktuális adatbázis alapértelmezett rendezéséhez vannak hozzárendelve. Az oszlophivatkozások az oszlop definíció szerinti rendezéséhez vannak rendelve.

Az azonosító rendezése attól függ, hogy milyen szinten van definiálva. A példányszintű objektumok (például bejelentkezések és adatbázisnevek) azonosítói a példány alapértelmezett rendezéséhez vannak rendelve. Az adatbázison belüli objektumok (például táblák, nézetek és oszlopnevek) azonosítói az adatbázis alapértelmezett rendezési eleméhez vannak rendelve. Előfordulhat például, hogy a kis- és nagybetűk megkülönböztetése esetén eltérő nevű táblákat egy kis- és nagybetűket megkülönböztető rendezéssel rendelkező adatbázisban hozzák létre, de nem olyan adatbázisban, amely megkülönbözteti a kis- és nagybetűket. További információ: Adatbázis-azonosítók.

Változók, GOTO-címkék, ideiglenes tárolt eljárások és ideiglenes táblák akkor hozhatók létre, ha a kapcsolati környezet egy adatbázishoz van társítva, majd hivatkozhat rá, amikor a környezet másik adatbázisra lett váltva. A változók, a GOTO-címkék, az ideiglenes tárolt eljárások és az ideiglenes táblák azonosítói a kiszolgálópéldány alapértelmezett rendezésében találhatók.

A COLLATE záradék csak a char, varchar, text, nchar, nvarchar és ntext adattípusokra alkalmazható.

COLLATE collate_name a SQL Server összeállítás vagy az Windows összeállítás nevére utal, amelyet az kifejezéshez, oszlopdefinícióhoz vagy adatbázis-definícióhoz alkalmaznak. collation_name csak megadott Windows_collation_name vagy SQL_collation_name lehet, és a paraméternek literális értéket kell tartalmaznia. collation_name nem jelölhető változó vagy kifejezés.

A rendezéseket általában rendezési név azonosítja, kivéve a telepítőben. A Telepítőben ehelyett meg kell adnia a Windows-rendezések gyökérütközési tervezőjét (a rendezési területi beállítást), majd meg kell adnia a kis- és nagybetűkre érzékeny vagy érzéketlen rendezési beállításokat.

A rendszerfüggvény fn_helpcollations végrehajtva lekérheti a Windows-rendezések és az SQL Server-rendezések érvényes rendezési nevének listáját:

SELECT name,
       description
FROM fn_helpcollations();

Az SQL Server csak az alapul szolgáló operációs rendszer által támogatott kódlapokat támogatja. Ha rendezéstől függő műveletet hajt végre, a hivatkozott objektum által használt SQL Server-rendezésnek a számítógépen futó operációs rendszer által támogatott kódlapot kell használnia. Ezek a műveletek a következők lehetnek:

  • Alapértelmezett rendezés megadása egy adatbázishoz az adatbázis létrehozásakor vagy módosításakor.
  • Oszlop rendezése táblázat létrehozásakor vagy módosításakor.
  • Adatbázis visszaállításakor vagy csatolásakor az operációs rendszernek támogatnia kell az adatbázis alapértelmezett rendezését és az karakter, varcharés szöveges oszlopainak vagy paramétereinek rendezését.

Jegyzet

A kódlapfordítások karakteres és varchar adattípusok esetében támogatottak, szöveges adattípus esetében azonban nem. A kódlapfordítások során bekövetkező adatvesztésről nem számolunk be.

Ha a megadott rendezés vagy a hivatkozott objektum által használt rendezés a Windows által nem támogatott kódlapot használ, az SQL Server hibát jelenít meg.

Példák

Egy. Rendezés megadása a SELECT során

Az alábbi példa egy egyszerű táblát hoz létre, és 4 sort szúr be. Ezután a példa két rendezést alkalmaz a tábla adatainak kiválasztásakor, bemutatva, hogy a Chiapas hogyan van másképp rendezve.

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

Az első SELECT lekérdezés eredményei az alábbiak.

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

Íme a második SELECT lekérdezés eredményei.

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

Íme a harmadik SELECT lekérdezés eredményei.

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

B. További példák

További példákért, amelyek használnak COLLATE, lásd CREATE DATABASE és ALTER TABLE.