COLLATE (Transact-SQL)COLLATE (Transact-SQL)

Область применения: ДаSQL Server ДаБаза данных SQL Azure ДаAzure Synapse Analytics (Хранилище данных SQL) ДаParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database YesAzure Synapse Analytics (SQL DW) YesParallel Data Warehouse

Определяет параметры сортировки базы данных или столбца таблицы либо операцию приведения параметров сортировки при использовании с выражением строки символов.Defines a collation of a database or table column, or a collation cast operation when applied to character string expression. Именем параметров сортировки может быть либо имя параметров сортировки Windows, либо имя параметров сортировки SQL.Collation name can be either a Windows collation name or a SQL collation name. Если не указывать этот параметр при создании базы данных, ей будут назначены параметры сортировки по умолчанию для экземпляра SQL ServerSQL Server.If not specified during database creation, the database is assigned the default collation of the instance of SQL ServerSQL Server. Если не указывать его при создании столбца таблицы, столбцу назначаются параметры сортировки по умолчанию для базы данных.If not specified during table column creation, the column is assigned the default collation of the database.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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

АргументыArguments

collation_name — имена параметров сортировки, применяемых к выражению, определению столбца или определению базы данных.collation_name Is the name of the collation to be applied to the expression, column definition, or database definition. Аргументом collation_name может быть только заданное имя Windows_collation_name или SQL_collation_name.collation_name can be only a specified Windows_collation_name or a SQL_collation_name. Аргумент collation_name должен быть литеральным значением.collation_name must be a literal value. Имя collation_name не может быть представлено переменной или выражением.collation_name cannot be represented by a variable or expression.

Аргумент Windows_collation_name является именем параметров сортировки для Windows Collation Name.Windows_collation_name is the collation name for a Windows Collation Name.

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

database_default — заставляет предложение COLLATE наследовать параметры сортировки текущей базы данных.database_default Causes the COLLATE clause to inherit the collation of the current database.

RemarksRemarks

Предложение COLLATE можно указывать на нескольких уровнях.The COLLATE clause can be specified at several levels. следующие основные параметры.These include the following:

  1. Создание или изменение базы данных.Creating or altering a database.

    Предложение COLLATE можно использовать в инструкциях CREATE DATABASE и ALTER DATABASE для указания параметров сортировки по умолчанию для базы данных.You can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default collation of the database. Можно также задать параметры сортировки при создании базы данных с помощью среды SQL Server Management StudioSQL Server Management Studio.You can also specify a collation when you create a database using SQL Server Management StudioSQL Server Management Studio. Если не указывать параметры сортировки, базе данных присваиваются параметры сортировки по умолчанию для экземпляра SQL ServerSQL Server.If you do not specify a collation, the database is assigned the default collation of the instance of SQL ServerSQL Server.

    Примечание

    Параметры сортировки Windows в Юникоде могут использоваться с предложением COLLATE только для типов данных nchar, nvarchar, and ntext на уровне столбцов и на уровне выражений. Ими нельзя пользоваться в предложении COLLATE для задания и изменения параметров сортировки базы данных или экземпляра сервера.Windows Unicode-only collations can only be used with the COLLATE clause to apply collations to the nchar, nvarchar, and ntext data types on column-level and expression-level data; these cannot be used with the COLLATE clause to define or change the collation of a database or server instance.

  2. Создание или изменение столбца таблицы.Creating or altering a table column.

    Параметры сортировки можно указать для каждого столбца строки символов с помощью предложения COLLATE в инструкциях CREATE TABLE и ALTER TABLE.You can specify collations for each character string column using the COLLATE clause of the CREATE TABLE or ALTER TABLE statement. Можно также задать параметры сортировки при создании таблицы с помощью среды SQL Server Management StudioSQL Server Management Studio.You can also specify a collation when you create a table using SQL Server Management StudioSQL Server Management Studio. Если не указывать параметры сортировки, столбцу присваиваются параметры сортировки по умолчанию для базы данных.If you do not specify a collation, the column is assigned the default collation of the database.

    Кроме того, в предложении COLLATE можно использовать параметр database_default для указания того, что столбец во временной таблице должен использовать параметры сортировки текущей пользовательской базы данных, заданные по умолчанию для соединения, а не параметры сортировки базы данных tempdb.You can also use the database_default option in the COLLATE clause to specify that a column in a temporary table use the collation default of the current user database for the connection instead of tempdb.

  3. Приведение параметров сортировки выражения.Casting the collation of an expression.

    Предложение COLLATE можно использовать для применения символьного выражения к определенным параметрам сортировки.You can use the COLLATE clause to apply a character expression to a certain collation. Символьным литералам и переменным присваиваются параметры сортировки по умолчанию для текущей базы данных.Character literals and variables are assigned the default collation of the current database. Ссылкам столбцов присваивается определение параметров сортировки для столбца.Column references are assigned the definition collation of the column.

Параметры сортировки идентификатора зависят от уровня, для которого определен этот идентификатор.The collation of an identifier depends on the level at which it is defined. К идентификаторам объектов на уровне экземпляров, таких как имена входа и имена базы данных, применяются параметры сортировки по умолчанию для экземпляра.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. К идентификаторам объектов внутри базы данных, таких как таблицы, представления и имена столбцов, применяются параметры сортировки, используемые по умолчанию для базы данных.Identifiers of objects within a database, such as tables, views, and column names, are assigned the default collation of the database. Например: две таблицы, имена которых отличаются только регистром, можно создать в базе данных с параметрами сортировки, учитывающими регистр букв, но нельзя создать в базе данных с параметрами сортировки без учета регистра.For example, two tables with names different only in case may be created in a database with case-sensitive collation, but may not be created in a database with case-insensitive collation. Дополнительные сведения см. в разделе Идентификаторы баз данных.For more information, see Database Identifiers.

Переменные, метки GOTO, временные хранимые процедуры и временные таблицы можно создавать, если контекст соединения связан с одной базой данных, и ссылка на которую сохраняется, когда контекст переключается на другую базу данных.Variables, GOTO labels, temporary stored procedures, and temporary tables can be created when the connection context is associated with one database, and then referenced when the context has been switched to another database. Идентификаторы переменных, меток GOTO, временных хранимых процедур и временных таблиц имеют параметры сортировки по умолчанию для экземпляра сервера.The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the server instance.

Предложение COLLATE можно применять только к типам данных char, varchar, text, nchar, nvarchar и ntext.The COLLATE clause can be applied only for the char, varchar, text, nchar, nvarchar, and ntext data types.

COLLATE использует аргумент collate_name для ссылки на имя параметров сортировки SQL ServerSQL Server или Windows, которые применяются к выражению, определению столбца или определению базы данных.COLLATE uses collate_name to refer to the name of either the SQL ServerSQL Server collation or the Windows collation to be applied to the expression, column definition, or database definition. collation_name может быть только указанным Windows_collation_name или SQL_collation_name, и параметр должен содержать литеральное значение.collation_name can be only a specified Windows_collation_name or a SQL_collation_name and the parameter must contain a literal value. Имя collation_name не может быть представлено переменной или выражением.collation_name cannot be represented by a variable or expression.

Параметры сортировки обычно определяются по имени, за исключением программы установки.Collations are generally identified by a collation name, except in Setup. В программе установки вместо имени указывается обозначение базовых параметров сортировки (языковой стандарт параметров сортировки) для параметров сортировки Windows, а затем определяются настройки сортировки с учетом или без учета регистра или диакритических знаков.In Setup, you instead specify the root collation designator (the collation locale) for Windows collations, and then specify sort options that are sensitive or insensitive to case or accents.

Чтобы получить список всех допустимых имен параметров сортировки для Windows и SQL Server, можно выполнить системную функцию fn_helpcollations:You can execute the system function fn_helpcollations to retrieve a list of all the valid collation names for Windows collations and SQL Server collations:

SELECT name, description
FROM fn_helpcollations();

SQL ServerSQL Server поддерживает только кодовые страницы, существующие в базовой операционной системе.can support only code pages that are supported by the underlying operating system. При выполнении операции, зависящей от параметров сортировки, используемых ссылочным объектом, параметры сортировки SQL ServerSQL Server должны использовать кодовую страницу, которая поддерживается работающей на компьютере операционной системой.When you perform an action that depends on collations, the SQL ServerSQL Server collation used by the referenced object must use a code page supported by the operating system running on the computer. Эти операции могут включать:These actions can include the following:

  • указание параметров сортировки по умолчанию для базы данных при ее создании или изменении;Specifying a default collation for a database when you create or alter the database.
  • указание параметров сортировки для столбца при создании или изменении таблицы;Specifying a collation for a column when you create or alter a table.
  • при восстановлении или присоединении базы данных параметры сортировки по умолчанию и параметры сортировки всех столбцов типа char, varchar и text или параметров базы данных должны поддерживаться операционной системой.When restoring or attaching a database, the default collation of the database and the collation of any char, varchar, and text columns or parameters in the database must be supported by the operating system.

Примечание

Преобразование кодовых страниц поддерживается для типов данных char и varchar, однако поддержка типа данных text не предусмотрена.Code page translations are supported for char and varchar data types, but not for text data type. Сообщения о потере данных во время преобразования кодовых страниц не выводятся.Data loss during code page translations is not reported.

Если параметры сортировки, заданные или применяемые объектом, на который указывает ссылка, используют кодовую страницу, не поддерживаемую Windows, SQL ServerSQL Server выдает ошибку.If the collation specified or the collation used by the referenced object uses a code page not supported by Windows, SQL ServerSQL Server displays an error.

ПримерыExamples

A.A. Указание параметров сортировки во время SELECTSpecifying collation during a SELECT

В следующем примере создается простая таблица, а затем вставляются четыре строки.The following example creates a simple table and inserts 4 rows. Затем в примере применяются два параметра сортировки при выборе данных из таблицы, при этом демонстрируется, что Chiapas сортируется по-разному.Then the example applies two collations when selecting data from the table, demonstrating how Chiapas is sorted differently.

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

Ниже приведены результаты первого запроса.Here are the results from the first query.

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

Ниже приведены результаты второго запроса.Here are the results from the second query.

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

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

Дополнительные примеры, в которых используется COLLATE, приведены в разделе Ж. Создание базы данных и назначение имени и параметров сортировки статьи CREATE DATABASE и в разделе Ф. Изменение параметров сортировки столбца статьи ALTER TABLE.For additional examples that use COLLATE, see CREATE DATABASE example G. Creating a database and specifying a collation name and options, and ALTER TABLE example V. Changing column collation.

См. также:See Also