COLLATE (Transact-SQL)

Предложение, которое может применяться к определению базы данных или столбца для определения параметров сортировки, либо к выражению символьной строки для приведения к параметрам сортировки.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

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

Аргументы

  • collation_name
    Имя параметров сортировки, применяемых к выражению, определению столбца или базы данных. Аргумент collation_name может быть только указанным Windows_collation_name или SQL_collation_name. Значение аргумента collation_name должно быть литералом. Аргумент collation_name не может быть представлен переменной или выражением.

    Аргумент Windows_collation_name является именем параметров сортировки для Windows Collation Name.

    Аргумент SQL_collation_name является именем параметров сортировки для SQL Server Collation Name.

    При применении параметров сортировки на уровне определения базы данных параметры сортировки Windows «Только для Юникода» нельзя использовать с предложением COLLATE.

  • database_default
    Заставляет предложение COLLATE наследовать параметры сортировки текущей базы данных.

Замечания

Предложение COLLATE можно указывать на нескольких уровнях. Это включает следующее:

  1. Создание или изменение базы данных.

    Предложение COLLATE можно использовать в инструкциях CREATE DATABASE и ALTER DATABASE для указания параметров сортировки по умолчанию для базы данных. Можно также задать параметры сортировки при создании базы данных с помощью среды Среда SQL Server Management Studio. Если не указывать параметры сортировки, базе данных присваиваются параметры сортировки по умолчанию для экземпляра SQL Server.

    ПримечаниеПримечание

    Параметры сортировки Windows «Только для Юникода» могут использоваться только с предложением COLLATE для применения параметров сортировки к данным на уровне столбца и уровне выражения, принадлежащим к типу nchar, nvarchar или ntext; их нельзя применять с предложением COLLATE для изменения параметров сортировки экземпляра базы данных или сервера.

  2. Создание или изменение столбца таблицы.

    Параметры сортировки можно указать для каждого столбца символьной строки с помощью предложения COLLATE в инструкциях CREATE TABLE и ALTER TABLE. Можно также задать параметры сортировки при создании таблицы с помощью среды Среда SQL Server Management Studio. Если не указывать параметры сортировки, столбцу присваиваются параметры сортировки по умолчанию для базы данных.

    Кроме того, в предложении COLLATE можно использовать параметр database_default для указания того, чтобы столбец во временной базе данных использовал параметры сортировки по умолчанию для текущего пользователя базы данных для соединения, а не параметры сортировки базы данных tempdb.

  3. Приведение параметров сортировки выражения.

    Предложение COLLATE можно использовать для применения символьного выражения к определенным параметрам сортировки. Символьным литералам и переменным присваиваются параметры сортировки по умолчанию для текущей базы данных. Ссылкам столбцов присваивается определение параметров сортировки для столбца. Сведения о параметрах сортировки выражения см. в разделе Очередность параметров сортировки (Transact-SQL).

Параметры сортировки идентификатора зависят от уровня, на котором он определен. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра. К идентификаторам объектов внутри базы данных, таких как таблицы, представления и имена столбцов, применяются параметры сортировки, используемые по умолчанию для базы данных. Например: две таблицы, имена которых отличаются только регистром, можно создать в базе данных с параметрами сортировки, учитывающими регистр букв, но нельзя создать в базе данных с параметрами сортировки без учета регистра. Дополнительные сведения см. в разделе Идентификаторы.

Переменные, метки GOTO, временные хранимые процедуры и временные таблицы можно создавать, если контекст соединения связан с одной базой данных, и ссылка на которую сохраняется, когда контекст переключается на другую базу данных. Идентификаторы переменных, меток GOTO, временных хранимых процедур и временных таблиц имеют параметры сортировки по умолчанию для экземпляра сервера.

Предложение COLLATE можно применять только к типам данных char, varchar, text, nchar, nvarchar и ntext.

Предложение COLLATE использует параметр collate_name для ссылки на имя параметров сортировки SQL Server либо параметров сортировки Windows, которые необходимо применить к выражению, определению столбца или определению базы данных. Параметр collation_name может быть только указанным значением Windows_collation_name или SQL_collation_name и должен содержать литеральное значение. Параметр collation_name не может быть представлен переменной или выражением.

Параметры сортировки обычно определяются по имени, за исключением программы установки. В программе установки вместо имени указывается обозначение базовых параметров сортировки (локали параметров сортировки) для параметров сортировки Windows, а затем определяются настройки сортировки с учетом или без учета регистра или диакритических знаков.

Можно выполнить системную функцию fn_helpcollations, чтобы получить список допустимых имен параметров сортировки для Windows и SQL Server:

SELECT *
FROM fn_helpcollations()

SQL Server поддерживает только кодовые страницы, существующие в базовой операционной системе. При выполнении операции, зависящей от параметров сортировки, используемых ссылочным объектом, параметры сортировки SQL Server должны использовать кодовую страницу, которая поддерживается работающей на компьютере операционной системой. Эти операции могут включать:

  • указание параметров сортировки по умолчанию для базы данных при ее создании или изменении;

  • указание параметров сортировки для столбца при создании или изменении таблицы;

  • при восстановлении или присоединении базы данных параметры сортировки по умолчанию и параметры сортировки всех столбцов типа char, varchar и text или параметров базы данных должны поддерживаться операционной системой.

    Преобразование кодовых страниц поддерживаются для типов данных char и varchar, однако поддержка типа данных text не предусмотрена. Сообщения о потере данных во время преобразования кодовых страниц не выводятся.

Если указанные или применяемые упоминаемым объектом параметры сортировки используют кодовую страницу, не поддерживаемую Windows, SQL Server выдает ошибку.

Примеры

А. Указание параметров сортировки при выборке данных

В следующем примере создается простая таблица, в которую вставляются 4 строки. Затем в примере во время выборки данных из таблицы применяются два набора параметров сортировки, чтобы показать, как Chiapas сортируется различным образом.

CREATE TABLE Locations
(Place varchar(15) NOT NULL);
GO
INSERT Locations(Place) VALUES ('Chiapas');
INSERT Locations(Place) VALUES ('Colima');
INSERT Locations(Place) VALUES ('Cinco Rios');
INSERT Locations(Place) VALUES ('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

Б. Дополнительные примеры

Дополнительные примеры использования предложения COLLATE см. в разделе CREATE DATABASE (Transact-SQL), пример Ж. Создание базы данных и назначение имени и параметров сортировки и в разделе ALTER TABLE (Transact-SQL), пример Ф. Изменение параметров сортировки столбца.