COLLATE (Transact-SQL)
Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Warehouse w usłudze Microsoft Fabric
Definiuje sortowanie bazy danych lub kolumny tabeli albo operację rzutowania sortowania po zastosowaniu do wyrażenia ciągu znaków. Nazwa sortowania może być nazwą sortowania systemu Windows lub nazwą sortowania SQL. Jeśli nie zostanie określona podczas tworzenia bazy danych, zostanie przypisana domyślna sortowanie wystąpienia programu SQL Server. Jeśli nie zostanie określony podczas tworzenia kolumny tabeli, kolumna zostanie przypisana do domyślnego sortowania bazy danych.
Transact-SQL konwencje składni
Składnia
COLLATE { <collation_name> | database_default }
<collation_name> ::=
{ Windows_collation_name } | { SQL_collation_name }
Argumenty
collation_name To nazwa sortowania, która ma zostać zastosowana do wyrażenia, definicji kolumny lub definicji bazy danych. collation_name może być tylko określony Windows_collation_name lub SQL_collation_name. collation_name musi być wartością literału. collation_name nie może być reprezentowana przez zmienną lub wyrażenie.
Windows_collation_name to nazwa sortowania nazwa sortowania systemu Windows.
SQL_collation_name to nazwa sortowania nazwa sortowania programu SQL Server.
Nuta
W usłudze Microsoft Fabric jedynym dozwolonym sortowaniem jest: Latin1_General_100_BIN2_UTF8.
database_default Powoduje, że klauzula COLLATE dziedziczy sortowanie bieżącej bazy danych.
Uwagi
Klauzulę COLLATE można określić na kilku poziomach. Należą do nich następujące elementy:
Tworzenie lub zmienianie bazy danych.
Możesz użyć klauzuli COLLATE instrukcji
CREATE DATABASE
lubALTER DATABASE
, aby określić domyślne sortowanie bazy danych. Sortowanie można również określić podczas tworzenia bazy danych przy użyciu programu SQL Server Management Studio. Jeśli nie określisz sortowania, baza danych zostanie przypisana do domyślnego sortowania wystąpienia programu SQL Server.Nuta
Sortowania tylko w formacie Unicode systemu Windows można używać tylko z klauzulą COLLATE w celu zastosowania sortowania do nchar, nvarchari ntext typów danych na poziomie kolumny i na poziomie wyrażenia; Nie można ich używać z klauzulą COLLATE w celu zdefiniowania lub zmiany sortowania wystąpienia bazy danych lub serwera.
Tworzenie lub zmienianie kolumny tabeli.
Sortowania dla każdej kolumny ciągu znaków można określić przy użyciu klauzuli COLLATE instrukcji
CREATE TABLE
lubALTER TABLE
. Sortowanie można również określić podczas tworzenia tabeli przy użyciu programu SQL Server Management Studio. Jeśli nie określisz sortowania, kolumna zostanie przypisana do domyślnego sortowania bazy danych.Możesz również użyć opcji
database_default
w klauzuli COLLATE, aby określić, że kolumna w tabeli tymczasowej używa domyślnego sortowania bieżącej bazy danych użytkownika dla połączenia zamiasttempdb
.Rzutowanie sortowania wyrażenia.
Możesz użyć klauzuli COLLATE, aby zastosować wyrażenie znaku do określonego sortowania. Literały znaków i zmienne są przypisywane domyślne sortowanie bieżącej bazy danych. Odwołania do kolumny są przypisywane do sortowania definicji kolumny.
Sortowanie identyfikatora zależy od poziomu, na którym jest zdefiniowany. Identyfikatory obiektów na poziomie wystąpienia, takich jak identyfikatory logowania i nazwy baz danych, są przypisywane domyślne sortowanie wystąpienia. Identyfikatory obiektów w bazie danych, takie jak tabele, widoki i nazwy kolumn, są przypisywane domyślne sortowanie bazy danych. Na przykład dwie tabele o nazwach różniące się tylko w przypadku utworzenia w bazie danych z sortowaniem uwzględniającym wielkość liter, ale mogą nie zostać utworzone w bazie danych z sortowaniem bez uwzględniania wielkości liter. Aby uzyskać więcej informacji, zobacz Database Identifiers.
Zmienne, etykiety GOTO, tymczasowe procedury składowane i tabele tymczasowe można utworzyć, gdy kontekst połączenia jest skojarzony z jedną bazą danych, a następnie odwoływać się, gdy kontekst został przełączony do innej bazy danych. Identyfikatory zmiennych, etykiety GOTO, tymczasowe procedury składowane i tabele tymczasowe są w domyślnym sortowaniu wystąpienia serwera.
Klauzulę COLLATE można stosować tylko dlaznaków
Funkcja COLLATE używa collate_name do odwoływania się do nazwy sortowania programu SQL Server lub sortowania systemu Windows, które mają być stosowane do wyrażenia, definicji kolumny lub definicji bazy danych. collation_name może być tylko określony Windows_collation_name lub SQL_collation_name, a parametr musi zawierać wartość literału. collation_name nie może być reprezentowana przez zmienną lub wyrażenie.
Sortowania są zwykle identyfikowane przez nazwę sortowania, z wyjątkiem instalacji. W obszarze Konfiguracja zamiast tego należy określić główny konfigurator sortowania (ustawienia regionalne sortowania) dla sortowania systemu Windows, a następnie określić opcje sortowania, które są wrażliwe lub niewrażliwe na wielkość liter lub akcenty.
Można wykonać funkcję systemową fn_helpcollations, aby pobrać listę wszystkich prawidłowych nazw sortowania dla sortowania systemu Windows i sortowania programu SQL Server:
SELECT name, description
FROM fn_helpcollations();
Program SQL Server może obsługiwać tylko strony kodu obsługiwane przez bazowy system operacyjny. W przypadku wykonywania akcji, która zależy od sortowania, sortowanie programu SQL Server używane przez obiekt, do którego odwołuje się odwołanie, musi używać strony kodowej obsługiwanej przez system operacyjny uruchomiony na komputerze. Te akcje mogą obejmować następujące elementy:
- Określanie domyślnego sortowania bazy danych podczas tworzenia lub zmieniania bazy danych.
- Określanie sortowania dla kolumny podczas tworzenia lub zmieniania tabeli.
- Podczas przywracania lub dołączania bazy danych domyślne sortowanie bazy danych i sortowanie dowolnych znaków, varchari tekst kolumny lub parametry w bazie danych muszą być obsługiwane przez system operacyjny.
Nuta
Tłumaczenia stron kodowych są obsługiwane w przypadku
Jeśli sortowanie określone lub sortowanie używane przez przywoływany obiekt używa strony kodowej nieobsługiwanej przez system Windows, program SQL Server wyświetla błąd.
Przykłady
A. Określanie sortowania podczas wybierania
Poniższy przykład tworzy prostą tabelę i wstawia 4 wiersze. Następnie przykład stosuje dwa sortowania podczas wybierania danych z tabeli, pokazując, jak Chiapas
są sortowane inaczej.
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
Oto wyniki pierwszego zapytania SELECT
.
Place
-------------
California
Chiapas
Cinco Rios
Colima
Oto wyniki drugiego zapytania SELECt
.
Place
-------------
California
Cinco Rios
Colima
Chiapas
Oto wyniki trzeciego zapytania SELECt
.
Place
-------------
Chiapas
Colima
Cinco Rios
California
B. Dodatkowe przykłady
Aby uzyskać dodatkowe przykłady użycia COLLATE, zobacz CREATE DATABASE przykład G. Tworzenie bazy danych i określanie nazwy sortowania i opcjioraz ALTER TABLE przykład V. Zmiana sortowania kolumn.
Powiązana zawartość
- ALTER TABLE
- sortowanie i obsługa unicode
- pierwszeństwo sortowania
- stałe
- CREATE DATABASE
- CREATE TABLE
- DECLARE @local_variable
- typu danych tabeli