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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simAzure Synapse Analytics (SQL DW) simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Define uma ordenação de uma coluna de banco de dados ou de tabela ou uma operação de conversão de ordenação quando aplicado a uma expressão de cadeia de caracteres.Defines a collation of a database or table column, or a collation cast operation when applied to character string expression. O nome da ordenação pode ser um nome de ordenação do Windows ou um nome de ordenação SQL.Collation name can be either a Windows collation name or a SQL collation name. Se ele não for especificado durante a criação do banco de dados, a ordenação padrão da instância do SQL ServerSQL Server será atribuída ao banco de dados.If not specified during database creation, the database is assigned the default collation of the instance of SQL ServerSQL Server. Se ele não for especificado durante a criação da coluna de tabela, a ordenação padrão do banco de dados será atribuída à coluna.If not specified during table column creation, the column is assigned the default collation of the database.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

collation_name É o nome da ordenação a ser aplicada à expressão, definição de coluna ou definição de banco de dados.collation_name Is the name of the collation to be applied to the expression, column definition, or database definition. collation_name pode ser apenas um Windows_collation_name ou um SQL_collation_name especificado.collation_name can be only a specified Windows_collation_name or a SQL_collation_name. collation_name deve ser um valor literal.collation_name must be a literal value. collation_name não pode ser representado por uma variável ou expressão.collation_name cannot be represented by a variable or expression.

Windows_collation_name é o nome de ordenação de um Nome de Ordenação do Windows.Windows_collation_name is the collation name for a Windows Collation Name.

SQL_collation_name é o nome de ordenação de um Nome de Ordenação do SQL Server.SQL_collation_name is the collation name for a SQL Server Collation Name.

database_default Faz com que a cláusula COLLATE herde a ordenação do banco de dados atual.database_default Causes the COLLATE clause to inherit the collation of the current database.

RemarksRemarks

A cláusula COLLATE pode ser especificada em vários níveis.The COLLATE clause can be specified at several levels. Entre elas estão as seguintes:These include the following:

  1. Criando ou alterando um banco de dados.Creating or altering a database.

    Você pode usar a cláusula COLLATE da instrução CREATE DATABASE ou ALTER DATABASE para especificar a ordenação padrão do banco de dados.You can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default collation of the database. Também é possível especificar uma ordenação ao criar um banco de dados usando 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. Se uma ordenação não for especificada, o banco de dados será atribuído à ordenação padrão da instância do SQL ServerSQL Server.If you do not specify a collation, the database is assigned the default collation of the instance of SQL ServerSQL Server.

    Observação

    As ordenações somente Unicode do Windows podem ser usadas com a cláusula COLLATE apenas para aplicar ordenações aos tipos de dados nchar, nvarchar e ntext em dados nos níveis de coluna e de expressão. Elas não podem ser usadas com a cláusula COLLATE para definir ou alterar a ordenação de uma instância de banco de dados ou de servidor.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. Criando ou alterando uma coluna de tabela.Creating or altering a table column.

    Você pode especificar ordenações para cada coluna de cadeia de caracteres usando a cláusula COLLATE da instrução CREATE TABLE ou ALTER TABLE.You can specify collations for each character string column using the COLLATE clause of the CREATE TABLE or ALTER TABLE statement. Também é possível especificar uma ordenação ao criar uma tabela usando 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. Se uma ordenação não for especificada, a coluna será atribuída à ordenação padrão do banco de dados.If you do not specify a collation, the column is assigned the default collation of the database.

    Também é possível usar a opção database_default na cláusula COLLATE para especificar que uma coluna de uma tabela temporária use o padrão de ordenação do banco de dados de usuário atual para a conexão em vez de 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. Convertendo a ordenação de uma expressão.Casting the collation of an expression.

    Você pode usar a cláusula COLLATE para aplicar uma expressão de caractere a uma determinada ordenação.You can use the COLLATE clause to apply a character expression to a certain collation. Literais de caracteres e variáveis são atribuídos à ordenação padrão do banco de dados atual.Character literals and variables are assigned the default collation of the current database. Referências de coluna são atribuídas à ordenação de definição da coluna.Column references are assigned the definition collation of the column.

A ordenação de um identificador depende do nível em que está definido.The collation of an identifier depends on the level at which it is defined. Os identificadores de objetos no nível de instância, como logons e nomes de banco de dados, são atribuídos à ordenação padrão da instância.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. Os identificadores de objetos em um banco de dados, como tabelas, exibições e nomes de coluna, são atribuídos à ordenação padrão do banco de dados.Identifiers of objects within a database, such as tables, views, and column names, are assigned the default collation of the database. Por exemplo, duas tabelas com nomes que diferem apenas em maiúsculas e minúsculas podem ser criadas em um banco de dados que possui ordenação que diferencia maiúsculas e minúsculas, mas não podem ser criadas em um banco de dados com uma ordenação que não faz essa diferenciação.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. Para obter mais informações, consulte Database Identifiers.For more information, see Database Identifiers.

Variáveis, rótulos GOTO, procedimentos armazenados temporários e tabelas temporárias podem ser criados quando o contexto de conexão é associado a um banco de dados e, em seguida, referenciado quando o contexto é alternado para outro banco de dados.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. Os identificadores para variáveis, os rótulos GOTO, os procedimentos armazenados temporários e as tabelas temporárias estão na ordenação padrão da instância de servidor.The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the server instance.

A cláusula COLLATE pode ser aplicada apenas aos tipos de dados char, varchar, text, nchar, nvarchar e ntext.The COLLATE clause can be applied only for the char, varchar, text, nchar, nvarchar, and ntext data types.

COLLATE usa collate_name para referenciar o nome da ordenação do SQL ServerSQL Server ou do Windows a ser aplicada à expressão, à definição de coluna ou à definição de banco de dados.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 pode ser somente um Windows_collation_name ou SQL_collation_name especificado e o parâmetro deve conter um valor literal.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 não pode ser representado por uma variável ou expressão.collation_name cannot be represented by a variable or expression.

Geralmente, as ordenações são identificadas por um nome de ordenação, exceto na Instalação.Collations are generally identified by a collation name, except in Setup. Na Instalação, especifique o designador de ordenação raiz (a localidade da ordenação) para ordenações do Windows e, em seguida, especifique opções de classificação que diferenciam ou não maiúsculas e minúsculas ou caracteres com ou sem acentos.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.

Você pode executar a função de sistema fn_helpcollations para recuperar uma lista de todos os nomes de ordenações válidos para ordenações do Windows e SQL Server: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();

O SQL ServerSQL Server só pode aceitar páginas de código que tenham suporte no sistema operacional subjacente.SQL ServerSQL Server can support only code pages that are supported by the underlying operating system. Quando você executa uma ação que depende de ordenações, a ordenação do SQL ServerSQL Server usada pelo objeto referenciado deve usar uma página de código com suporte no sistema operacional executado no computador.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. Essas ações podem incluir o seguinte:These actions can include the following:

  • Especificando uma ordenação padrão para um banco de dados ao criar ou alterar o banco de dados.Specifying a default collation for a database when you create or alter the database.
  • Especificando uma ordenação para uma coluna ao criar ou alterar uma tabela.Specifying a collation for a column when you create or alter a table.
  • Ao restaurar ou anexar um banco de dados, a ordenação padrão do banco de dados e a ordenação de qualquer coluna ou parâmetro char, varchar e text no banco de dados devem ser compatíveis com o sistema operacional.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.

Observação

Há suporte para conversões de página de código em tipos de dados char e varchar, mas não no tipo de dados text.Code page translations are supported for char and varchar data types, but not for text data type. A perda de dados durante traduções de página de código não é informada.Data loss during code page translations is not reported.

Se a ordenação especificada ou a ordenação usada pelo objeto referenciado usar uma página de código não compatível com o Windows, o SQL ServerSQL Server exibirá um erro.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.

ExemplosExamples

A.A. Especificando a ordenação durante uma instrução SELECTSpecifying collation during a SELECT

O exemplo a seguir cria uma tabela simples e insere 4 linhas.The following example creates a simple table and inserts 4 rows. Depois, o exemplo aplica duas ordenações ao selecionar dados da tabela, demonstrando como Chiapas é classificado de forma diferente.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

Estes são os resultados da primeira consulta.Here are the results from the first query.

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

Estes são os resultados da segunda consulta.Here are the results from the second query.

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

B.B. Exemplos adicionaisAdditional examples

Para obter mais exemplos que usam COLLATE, confira CREATE DATABASE, exemplo G. Criando um banco de dados e especificando um nome de ordenação e opções e ALTER TABLE, exemplo V. Alterando uma ordenação de coluna.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.

Consulte TambémSee Also