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

SI APPLICA A: sìSQL Server (a partire dalla versione 2008) sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Definisce le regole di confronto di un database o di una colonna di database, o un'operazione di cast di regole di confronto se applicata all'espressione della stringa di caratteri.Defines a collation of a database or table column, or a collation cast operation when applied to character string expression. È possibile usare nomi di regole di confronto di Windows o SQL.Collation name can be either a Windows collation name or a SQL collation name. Se non viene specificato durate la creazione del database, al database vengono assegnate le regole di confronto predefinite dell'istanza di SQL ServerSQL Server.If not specified during database creation, the database is assigned the default collation of the instance of SQL ServerSQL Server. Se non viene specificato durate la creazione della colonna della tabella, alla colonna vengono assegnate le regole di confronto predefinite del database.If not specified during table column creation, the column is assigned the default collation of the database.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

collation_name è il nome delle regole di confronto da applicare all'espressione o alla definizione di colonna o di database.collation_name Is the name of the collation to be applied to the expression, column definition, or database definition. In collation_name è possibile usare solo un Windows_collation_name o un SQL_collation_name specificato.collation_name can be only a specified Windows_collation_name or a SQL_collation_name. collation_name deve essere un valore letterale.collation_name must be a literal value. collation_name non può essere rappresentato da una variabile o un'espressione.collation_name cannot be represented by a variable or expression.

Windows_collation_name è il nome delle regole di confronto per un Nome delle regole di confronto di Windows.Windows_collation_name is the collation name for a Windows Collation Name.

SQL_collation_name è il nome delle regole di confronto per un Nome delle regole di confronto di SQL Server.SQL_collation_name is the collation name for a SQL Server Collation Name.

database_default specifica che la clausola COLLATE eredita le regole di confronto del database corrente.database_default Causes the COLLATE clause to inherit the collation of the current database.

RemarksRemarks

È possibile specificare la clausola COLLATE a vari livelli,The COLLATE clause can be specified at several levels. tra cui:These include the following:

  1. In fase di creazione o modifica di un database.Creating or altering a database.

    La clausola COLLATE dell'istruzione CREATE DATABASE o ALTER DATABASE consente di specificare le regole di confronto predefinite del database.You can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default collation of the database. È inoltre possibile specificare una regola di confronto durante la creazione di un database tramite 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 non vengono specificate regole di confronto, al database verranno assegnate le regole di confronto predefinite dell'istanza di SQL ServerSQL Server.If you do not specify a collation, the database is assigned the default collation of the instance of SQL ServerSQL Server.

    Nota

    Le regole di confronto solo Unicode di Windows possono essere usate solo con la clausola COLLATE per applicare regole di confronto ai tipi di dati nchar, nvarchar e ntext su dati a livello di colonna e a livello di espressione. Queste regole non possono essere usate con la clausola COLLATE per definire o modificare le regole di confronto di un database o un'istanza del server.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. In fase di creazione o modifica di una colonna di tabella.Creating or altering a table column.

    È possibile specificare le regole di confronto di ogni colonna contenente stringhe di caratteri tramite la clausola COLLATE dell'istruzione CREATE TABLE o ALTER TABLE.You can specify collations for each character string column using the COLLATE clause of the CREATE TABLE or ALTER TABLE statement. È inoltre possibile specificare una regola di confronto durante la creazione di una tabella tramite 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 non vengono specificate regole di confronto, alla colonna verranno assegnate le regole di confronto predefinite del database.If you do not specify a collation, the column is assigned the default collation of the database.

    È inoltre possibile usare l'opzione database_default nella clausola COLLATE per specificare che una colonna di una tabella temporanea usa le regole di confronto predefinite del database utente corrente per la connessione anziché quelle del database 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. In fase di casting delle regole di confronto di un'espressione.Casting the collation of an expression.

    Tramite la clausola COLLATE è possibile applicare un'espressione di caratteri a regole di confronto specifiche.You can use the COLLATE clause to apply a character expression to a certain collation. Ai valori letterali e alle variabili di tipo carattere vengono assegnate le regole di confronto predefinite del database corrente.Character literals and variables are assigned the default collation of the current database. Ai riferimenti di colonna vengono assegnate le regole di confronto di definizione della colonna.Column references are assigned the definition collation of the column.

Le regole di confronto di un identificatore dipendono dal livello nel quale viene definito.The collation of an identifier depends on the level at which it is defined. Agli identificatori degli oggetti a livello di istanza, quali gli account di accesso e i nomi di database, vengono assegnate le regole di confronto predefinite dell'istanza.Identifiers of instance-level objects, such as logins and database names, are assigned the default collation of the instance. Agli identificatori degli oggetti di un database, quali tabelle, viste e nomi di colonna, vengono assegnate le regole di confronto predefinite del database.Identifiers of objects within a database, such as tables, views, and column names, are assigned the default collation of the database. Ad esempio, due tabelle i cui nomi si differenziano soltanto per l'utilizzo del maiuscolo e del minuscolo possono essere create in un database con regole di confronto in cui l'uso di maiuscole e minuscole è rilevante, ma non in un database con regole di confronto in cui l'uso di maiuscole e minuscole non è rilevante.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. Per altre informazioni, vedere Identificatori del database.For more information, see Database Identifiers.

È possibile creare variabili, etichette GOTO, stored procedure temporanee e tabelle temporanee se il contesto di connessione è associato a un singolo database, e quindi fare riferimento ad esse quando il contesto passa a un altro database.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. Gli identificatori di variabili, le etichette GOTO, le stored procedure temporanee e le tabelle temporanee sono inclusi nelle regole di confronto predefinite dell'istanza del server.The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the server instance.

È possibile applicare la clausola COLLATE solo ai tipi di dati 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 per fare riferimento al nome delle regole di confronto di SQL ServerSQL Server o di Windows da applicare all'espressione, alla definizione di colonna o alla definizione del database.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. In collation_name è possibile usare solo un Windows_collation_name o un SQL_collation_name specificato e il parametro deve contenere un valore letterale.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 non può essere rappresentato da una variabile o un'espressione.collation_name cannot be represented by a variable or expression.

Le regole di confronto sono identificate in genere da un nome, ad eccezione che nel programma di installazione.Collations are generally identified by a collation name, except in Setup. Nel programma di installazione viene invece specificata la designazione delle regole di confronto radice (le impostazioni locali delle regole di confronto) per le regole di confronto di Windows, quindi vengono specificate le opzioni di ordinamento che possono rispettare o meno la distinzione tra maiuscole e minuscole e tra caratteri accentati e non accentati.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.

È possibile eseguire la funzione di sistema fn_helpcollations per recuperare un elenco di tutti i nomi validi per le regole di confronto di 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();

SQL ServerSQL Server supporta solo le tabelle codici supportate dal sistema operativo corrente.can support only code pages that are supported by the underlying operating system. Quando si esegue un'azione che dipende dalle regole di confronto, le regole di confronto di SQL ServerSQL Server utilizzate dall'oggetto a cui si fa riferimento devono utilizzare una tabella codici supportata dal sistema operativo in esecuzione nel computer.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. Queste azioni includono:These actions can include the following:

  • Impostazione delle regole di confronto predefinite per un database utilizzate durante la creazione o la modifica del database.Specifying a default collation for a database when you create or alter the database.
  • Impostazione delle regole di confronto per una colonna utilizzate durante la creazione o la modifica di una tabella.Specifying a collation for a column when you create or alter a table.
  • Durante il ripristino o il collegamento di un database è necessario che le regole di confronto predefinite del database e quelle delle colonne o dei parametri di tipo char, varchar e text presenti nel database siano supportate dal sistema operativo.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.

Nota

Le regole di confronto del server dell'istanza gestita di Database SQL di AzureAzure SQL Database sono SQL_Latin1_General_CP1_CI_AS e non possono essere modificate.Database SQL di AzureAzure SQL Database managed instance server collation is SQL_Latin1_General_CP1_CI_AS and cannot be changed.

Le conversioni tra tabelle codici sono supportate per i tipi di dati char e varchar, ma non per il tipo di dati text.Code page translations are supported for char and varchar data types, but not for text data type. L'eventuale perdita di dati che si verifica durante la conversione tra tabelle codici non viene segnalata.Data loss during code page translations is not reported.

Se le regole di confronto specificate o adottate dall'oggetto cui viene fatto riferimento usano una tabella codici non supportata dai sistemi operativi Windows, in SQL ServerSQL Server viene visualizzato un errore.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.

EsempiExamples

A.A. Specifica delle regole di confronto durante una SELEZIONESpecifying collation during a SELECT

Nell'esempio seguente viene creata la tabella semplice in cui vengono inserite 4 righe.The following example creates a simple table and inserts 4 rows. Quindi vengono applicate due regole di confronto durante la selezione dei dati dalla tabella per dimostrare che Chiapas viene ordinato in modo differente.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

Di seguito vengono riportati i risultati dalla prima query.Here are the results from the first query.

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

Di seguito vengono riportati i risultati dalla seconda query.Here are the results from the second query.

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

b.B. Esempi aggiuntiviAdditional examples

Per altri esempi in cui viene usata la clausola COLLATE, vedere CREATE DATABASE, esempio G. Creazione di un database e specifica di un nome delle regole di confronto e delle opzioni e ALTER TABLE, esempio V. Modifica delle regole di confronto di una colonna.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.

Vedere ancheSee Also