Sdílet prostřednictvím


COLLATE (Transact-SQL)

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Warehouse v Microsoft Fabric

Definuje kolaci sloupce databáze nebo tabulky nebo operaci přetypování kolace při použití u výrazu řetězce znaků. Název kolace může být buď název kolace Systému Windows, nebo název kolace SQL. Pokud není během vytváření databáze zadáno, přiřadí se mu výchozí kolace instance SQL Serveru. Pokud během vytváření sloupce tabulky nezadáte, přiřadí se mu výchozí kolace databáze.

Transact-SQL konvence syntaxe

Syntax

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

Argumenty

collation_name Je název kolace, který se má použít pro výraz, definici sloupce nebo definici databáze. collation_name mohou být pouze zadané Windows_collation_name nebo SQL_collation_name. collation_name musí být hodnota literálu. collation_name nelze reprezentovat proměnnou ani výrazem.

Windows_collation_name je název kolaceWindows Collation Name .

SQL_collation_name je název kolace pro název kolace SQL Serveru.

Poznámka

V Microsoft Fabric je jediná povolená kolace: Latin1_General_100_BIN2_UTF8.

database_default Způsobí, že klauzule COLLATE dědí kolaci aktuální databáze.

Poznámky

Klauzuli COLLATE je možné zadat na několika úrovních. Patří mezi ně následující:

  1. Vytvoření nebo změna databáze

    K určení výchozí kolace databáze můžete použít klauzuli COLLATE CREATE DATABASE nebo ALTER DATABASE příkazu. Kolaci můžete také zadat při vytváření databáze pomocí aplikace SQL Server Management Studio. Pokud neurčíte kolaci, přiřadí se k databázi výchozí kolace instance SQL Serveru.

    Poznámka

    Kolace pouze windows Unicode lze použít s klauzulí COLLATE pouze k použití kolací na nchar, nvarchara ntext datových typů na úrovni sloupců a výrazů; nelze je použít s klauzulí COLLATE k definování nebo změně kolace databáze nebo instance serveru.

  2. Vytvoření nebo změna sloupce tabulky

    Kolace pro každý sloupec řetězce znaků můžete zadat pomocí klauzule COLLATE CREATE TABLE nebo ALTER TABLE příkazu. Kolaci můžete také zadat při vytváření tabulky pomocí aplikace SQL Server Management Studio. Pokud neurčíte kolaci, přiřadí se ve sloupci výchozí kolace databáze.

    Pomocí možnosti database_default v klauzuli COLLATE můžete také určit, že sloupec v dočasné tabulce místo tempdbpoužívá výchozí kolaci aktuální uživatelské databáze.

  3. Přetypování kolace výrazu

    Klauzuli COLLATE můžete použít k použití znakového výrazu na určitou kolaci. Znakové literály a proměnné jsou přiřazeny výchozí kolaci aktuální databáze. Odkazy na sloupce jsou přiřazeny kolaci definice sloupce.

Kolace identifikátoru závisí na úrovni, na které je definován. Identifikátory objektů na úrovni instance, jako jsou přihlášení a názvy databází, jsou přiřazeny výchozí kolaci instance. Identifikátory objektů v databázi, jako jsou tabulky, zobrazení a názvy sloupců, jsou přiřazeny výchozí kolaci databáze. Například dvě tabulky s názvy, které se liší pouze v případě, že se v databázi vytvoří kolace s rozlišováním velkých a malých písmen, ale nemusí být vytvořeny v databázi s rozlišováním malých a malých písmen. Další informace naleznete v tématu identifikátory databáze.

Proměnné, popisky GOTO, dočasné uložené procedury a dočasné tabulky je možné vytvořit, když je kontext připojení přidružený k jedné databázi, a odkazovat na to, kdy byl kontext přepnut na jinou databázi. Identifikátory proměnných, popisků GOTO, dočasných uložených procedur a dočasných tabulek jsou ve výchozím kolaci instance serveru.

Klauzuli COLLATE lze použít pouze pro char, varchar, text, nchar, nvarchara ntext datových typů.

Funkce COLLATE používá collate_name k odkazování na název kolace SQL Serveru nebo kolace Systému Windows, která se má použít pro výraz, definici sloupce nebo definici databáze. collation_name může být pouze zadaná Windows_collation_name nebo SQL_collation_name a parametr musí obsahovat hodnotu literálu. collation_name nelze reprezentovat proměnnou ani výrazem.

Kolace jsou obecně identifikovány názvem kolace s výjimkou nastavení. V instalačním programu místo toho určíte návrh kořenové kolace (národní prostředí kolace) pro kolace Systému Windows a pak zadáte možnosti řazení, které jsou citlivé nebo nerozlišují velká a velká písmena nebo zvýraznění.

Systémovou funkci můžete spustit fn_helpcollations a načíst seznam všech platných názvů kolací pro kolace Windows a kolace SQL Serveru:

SELECT name, description
FROM fn_helpcollations();

SQL Server může podporovat pouze znakové stránky, které jsou podporovány základním operačním systémem. Když provedete akci, která závisí na kolacích, musí kolace SQL Serveru používaná odkazovaným objektem používat znakovou stránku podporovanou operačním systémem spuštěným v počítači. Mezi tyto akce patří:

  • Zadání výchozí kolace pro databázi při vytváření nebo změně databáze
  • Určení kolace pro sloupec při vytváření nebo změně tabulky
  • Při obnovování nebo připojování databáze musí operační systém podporovat výchozí kolaci databáze a kolaci všech znakových, varchara textové sloupce nebo parametry v databázi.

Poznámka

Překlady znakových stránek jsou podporovány pro znak a varchar datových typů, ale ne pro text datový typ. Ztráta dat během překladů znakových stránek se nenahlásí.

Pokud kolace zadaná nebo kolace používaná odkazovaným objektem používá znakovou stránku nepodporovanou systémem Windows, zobrazí SQL Server chybu.

Příklady

A. Určení kolace během příkazu SELECT

Následující příklad vytvoří jednoduchou tabulku a vloží 4 řádky. V příkladu se při výběru dat z tabulky použijí dvě kolace, což ukazuje, jak se Chiapas seřadí jinak.

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

Tady jsou výsledky prvního dotazu SELECT.

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

Tady jsou výsledky z druhého dotazu SELECt.

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

Tady jsou výsledky třetího dotazu SELECt.

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

B. Další příklady

Další příklady, které používají collate, najdete v příkladu CREATE DATABASE G. Vytvoření databáze a zadání názvu kolace a možnostía ALTER TABLE příklad V. Změna kolace sloupců.