COLATO (Transact-SQL)
Define um agrupamento de um banco de dados ou coluna de tabela, ou uma operação de conversão de agrupamento quando aplicado à expressão de cadeia de caracteres. O nome do agrupamento pode ser um nome de agrupamento do Windows ou um nome de agrupamento SQL. Se não for especificado durante a criação do banco de dados, o banco de dados receberá o agrupamento padrão da instância do SQL Server. Se não for especificado durante a criação da coluna da tabela, será atribuído à coluna o agrupamento padrão do banco de dados.
Transact-SQL convenções de sintaxe
Sintaxe
COLLATE { <collation_name> | database_default }
<collation_name> ::=
{ Windows_collation_name } | { SQL_collation_name }
Argumentos
collation_name É o nome do agrupamento a ser aplicado à expressão, definição de coluna ou definição de banco de dados. collation_name pode ser apenas um Windows_collation_name especificado ou um SQL_collation_name. collation_name deve ser um valor literal. collation_name não pode ser representado por uma variável ou expressão.
Windows_collation_name é o nome de agrupamento de um Nome de agrupamento do Windows.
SQL_collation_name é o nome de agrupamento de um Nome de agrupamento do SQL Server.
Observação
No Microsoft Fabric, o único agrupamento permitido é: Latin1_General_100_BIN2_UTF8.
database_default Faz com que a cláusula COLLATE herde o agrupamento do banco de dados atual.
Comentários
A cláusula COLLATE pode ser especificada a vários níveis. Estes incluem o seguinte:
Criar ou alterar uma base de dados.
Você pode usar a cláusula COLLATE da instrução
CREATE DATABASE
ouALTER DATABASE
para especificar o agrupamento padrão do banco de dados. Você também pode especificar um agrupamento ao criar um banco de dados usando o SQL Server Management Studio. Se você não especificar um agrupamento, o banco de dados receberá o agrupamento padrão da instância do SQL Server.Observação
Os agrupamentos somente Unicode do Windows só podem ser usados com a cláusula COLLATE para aplicar agrupamentos aos nchar , nvarchare tipos de dados ntext em dados de nível de coluna e de expressão; eles não podem ser usados com a cláusula COLLATE para definir ou alterar o agrupamento de um banco de dados ou instância do servidor.
Criar ou alterar uma coluna de tabela.
Você pode especificar agrupamentos para cada coluna de cadeia de caracteres usando a cláusula COLLATE da instrução
CREATE TABLE
ouALTER TABLE
. Você também pode especificar um agrupamento ao criar uma tabela usando o SQL Server Management Studio. Se você não especificar um agrupamento, será atribuído à coluna o agrupamento padrão do banco de dados.Você também pode usar a opção
database_default
na cláusula COLLATE para especificar que uma coluna em uma tabela temporária use o padrão de agrupamento do banco de dados de usuário atual para a conexão em vez detempdb
.Lançar o agrupamento de uma expressão.
Você pode usar a cláusula COLLATE para aplicar uma expressão de caractere a um determinado agrupamento. Literais de caracteres e variáveis recebem o agrupamento padrão do banco de dados atual. Às referências de coluna é atribuído o agrupamento de definições da coluna.
O agrupamento de um identificador depende do nível em que ele é definido. Identificadores de objetos no nível da instância, como logons e nomes de banco de dados, recebem o agrupamento padrão da instância. Identificadores de objetos dentro de um banco de dados, como tabelas, exibições e nomes de coluna, recebem o agrupamento padrão do banco de dados. Por exemplo, duas tabelas com nomes diferentes apenas em maiúsculas e minúsculas podem ser criadas em um banco de dados com agrupamento que diferencia maiúsculas de minúsculas, mas podem não ser criadas em um banco de dados com agrupamento que não diferencia maiúsculas de minúsculas. Para obter mais informações, consulte 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, referenciados quando o contexto foi alternado para outro banco de dados. Os identificadores de variáveis, rótulos GOTO, procedimentos armazenados temporários e tabelas temporárias estão no agrupamento padrão da instância do servidor.
A cláusula COLLATE pode ser aplicada apenas para o char, varchar, text, nchar, nvarchare ntext tipos de dados.
COLLATE usa collate_name para se referir ao nome do agrupamento do SQL Server ou do agrupamento do Windows a ser aplicado à expressão, definição de coluna ou definição de banco de dados. collation_name pode ser apenas um Windows_collation_name especificado ou um SQL_collation_name e o parâmetro deve conter um valor literal. collation_name não pode ser representado por uma variável ou expressão.
Os agrupamentos geralmente são identificados por um nome de agrupamento, exceto em Configuração. Em Instalação, você especifica o designador de agrupamento raiz (a localidade de agrupamento) para agrupamentos do Windows e, em seguida, especifica opções de classificação que são sensíveis ou insensíveis a maiúsculas e minúsculas ou acentos.
Você pode executar a função do sistema fn_helpcollations recuperar uma lista de todos os nomes de agrupamento válidos para agrupamentos do Windows e do SQL Server:
SELECT name, description
FROM fn_helpcollations();
O SQL Server pode dar suporte somente a páginas de código que são suportadas pelo sistema operacional subjacente. Quando você executa uma ação que depende de agrupamentos, o agrupamento do SQL Server usado pelo objeto referenciado deve usar uma página de código suportada pelo sistema operacional em execução no computador. Essas ações podem incluir o seguinte:
- Especificando um agrupamento padrão para um banco de dados quando você cria ou altera o banco de dados.
- Especificar um agrupamento para uma coluna quando você cria ou altera uma tabela.
- Ao restaurar ou anexar um banco de dados, o agrupamento padrão do banco de dados e o agrupamento de qualquer char, varchare texto colunas ou parâmetros no banco de dados devem ser suportados pelo sistema operacional.
Observação
As traduções de página de código são suportadas para char e tipos de dados varchar, mas não para texto tipo de dados. A perda de dados durante traduções de páginas de código não é relatada.
Se o agrupamento especificado ou o agrupamento usado pelo objeto referenciado usar uma página de código sem suporte no Windows, o SQL Server exibirá um erro.
Exemplos
Um. Especificando o agrupamento durante um SELECT
O exemplo a seguir cria uma tabela simples e insere 4 linhas. Em seguida, o exemplo aplica dois agrupamentos ao selecionar dados da tabela, demonstrando como Chiapas
é classificada de forma diferente.
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
Aqui estão os resultados da primeira consulta SELECT
.
Place
-------------
California
Chiapas
Cinco Rios
Colima
Aqui estão os resultados da segunda consulta SELECt
.
Place
-------------
California
Cinco Rios
Colima
Chiapas
Aqui estão os resultados da terceira consulta SELECt
.
Place
-------------
Chiapas
Colima
Cinco Rios
California
B. Exemplos adicionais
Para obter exemplos adicionais que usam COLLATE, consulte CREATE DATABASE exemplo G. Criando um banco de dados e especificando um nome de agrupamento e opçõese ALTER TABLE exemplo V. Alterando o agrupamento de colunas.
Conteúdo relacionado
- TABELA ALTER
- de suporte a agrupamento e Unicode
- Precedência de agrupamento
- constantes
- CRIAR BANCO DE DADOS
- CRIAR TABELA
- DECLARE @local_variable
- Tipo de dados Tabela