COLLATE (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azureхранилище платформы Аналитики Azure Synapse Analytics (PDW)в Microsoft Fabric
Определяет параметры сортировки базы данных или столбца таблицы либо операцию приведения параметров сортировки при использовании с выражением строки символов. Именем параметров сортировки может быть либо имя параметров сортировки Windows, либо имя параметров сортировки SQL. Если база данных не указана во время создания базы данных, она назначается параметры сортировки по умолчанию экземпляра SQL Server. Если не указывать его при создании столбца таблицы, столбцу назначаются параметры сортировки по умолчанию для базы данных.
Соглашения о синтаксисе 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.
Примечание.
В Microsoft Fabric разрешено только параметры сортировки: Latin1_General_100_BIN2_UTF8.
database_default — заставляет предложение COLLATE наследовать параметры сортировки текущей базы данных.
Замечания
Предложение COLLATE можно указывать на нескольких уровнях. следующие основные параметры.
Создание или изменение базы данных.
Предложение COLLATE можно использовать в инструкциях
CREATE DATABASE
иALTER DATABASE
для указания параметров сортировки по умолчанию для базы данных. Можно также указать параметры сортировки при создании базы данных с помощью SQL Server Management Studio. Если вы не указываете параметры сортировки, база данных назначается параметры сортировки по умолчанию экземпляра SQL Server.Примечание.
Параметры сортировки только для Windows Юникода можно использовать только с предложением COLLATE для применения параметров сортировки к nchar, nvarcharи ntext типов данных на уровне столбцов и уровне выражений; их нельзя использовать с предложением COLLATE для определения или изменения сортировки экземпляра базы данных или сервера.
Создание или изменение столбца таблицы.
Параметры сортировки можно указать для каждого столбца строки символов с помощью предложения COLLATE в инструкциях
CREATE TABLE
иALTER TABLE
. При создании таблицы с помощью SQL Server Management Studio можно также указать параметры сортировки. Если вы не указываете параметры сортировки, столбец назначается параметры сортировки по умолчанию для базы данных.Вы также можете использовать параметр
database_default
в предложении COLLATE, чтобы указать, что столбец во временной таблице использует параметры сортировки текущей пользовательской базы данных для подключения вместоtempdb
.Приведение параметров сортировки выражения.
Предложение COLLATE можно использовать для применения символьного выражения к определенным параметрам сортировки. Символьным литералам и переменным присваиваются параметры сортировки по умолчанию для текущей базы данных. Ссылкам столбцов присваивается определение параметров сортировки для столбца.
Параметры сортировки идентификатора зависят от уровня, на котором он определен. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра. К идентификаторам объектов внутри базы данных, таких как таблицы, представления и имена столбцов, применяются параметры сортировки, используемые по умолчанию для базы данных. Например, две таблицы с именами, разными только в случае, могут быть созданы в базе данных с учетом регистра сортировки, но не могут быть созданы в базе данных с нечувствительными параметрами сортировки регистра. Дополнительные сведения см. в разделе Идентификаторы баз данных.
Переменные, метки 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, а затем определяются настройки сортировки с учетом или без учета регистра или диакритических знаков.
Чтобы получить список всех допустимых имен параметров сортировки для Windows и SQL Server, можно выполнить системную функцию fn_helpcollations:
SELECT name, description
FROM fn_helpcollations();
SQL Server может поддерживать только кодовую страницу, поддерживаемую базовой операционной системой. При выполнении действия, зависящее от параметров сортировки, параметры сортировки SQL Server, используемые ссылочным объектом, должны использовать кодовую страницу, поддерживаемую операционной системой, работающей на компьютере. Эти операции могут включать:
- указание параметров сортировки по умолчанию для базы данных при ее создании или изменении;
- указание параметров сортировки для столбца при создании или изменении таблицы;
- при восстановлении или присоединении базы данных параметры сортировки по умолчанию и параметры сортировки всех столбцов типа char, varchar и text или параметров базы данных должны поддерживаться операционной системой.
Примечание.
Преобразование кодовых страниц поддерживается для типов данных char и varchar, однако поддержка типа данных text не предусмотрена. Потеря данных во время перевода кодовой страницы не сообщается.
Если указанный параметр сортировки или параметры сортировки, используемые объектом, на который ссылается ссылка, использует кодовую страницу, не поддерживаемую Windows, SQL Server отображает ошибку.
Примеры
А. Указание параметров сортировки во время SELECT
В следующем примере создается простая таблица, а затем вставляются четыре строки. Затем в примере применяются два параметра сортировки при выборе данных из таблицы, при этом демонстрируется, что Chiapas
сортируется по-разному.
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
Ниже приведены результаты первого запроса SELECT
.
Place
-------------
California
Chiapas
Cinco Rios
Colima
Ниже приведены результаты второго запроса SELECt
.
Place
-------------
California
Cinco Rios
Colima
Chiapas
Ниже приведены результаты третьего запроса SELECt
.
Place
-------------
Chiapas
Colima
Cinco Rios
California
B. Дополнительные примеры
Дополнительные примеры, в которых используется COLLATE, приведены в разделе Ж. Создание базы данных и назначение имени и параметров сортировки статьи CREATE DATABASE и в разделе Ф. Изменение параметров сортировки столбца статьи ALTER TABLE.