COLLATE (Transact-SQL)

Data aggiornamento: 5 dicembre 2005

Clausola che è possibile applicare a una definizione di database o di colonna per definire le regole di confronto oppure a un'espressione stringa di caratteri per applicare il casting delle regole di confronto.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • collation_name
    Nome delle regole di confronto da applicare all'espressione o alla definizione di colonna o di database. collation_name può corrispondere solo al valore specificato in Windows_collation_name o SQL_collation_name. collation_name deve essere un valore letterale. collation_name non può essere rappresentato da una variabile o un'espressione.

    Windows_collation_name corrisponde al nome delle regole di confronto per un nome delle regole di confronto di Windows.

    SQL_collation_name corrisponde al nome delle regole di confronto per un nome delle regole di confronto SQL.

  • database_default
    La clausola COLLATE eredita le regole di confronto del database corrente.

Osservazioni

È possibile specificare la clausola COLLATE a vari livelli, ad esempio:

  1. In fase di creazione o modifica di un database.
    La clausola COLLATE dell'istruzione CREATE DATABASE o ALTER DATABASE consente di specificare le regole di confronto predefinite del database. È inoltre possibile specificare una regola di confronto durante la creazione di un database tramite SQL Server Management Studio. Se non vengono specificate regole di confronto, al database verranno assegnate le regole di confronto predefinite dell'istanza di SQL Server.
  2. In fase di creazione o modifica di una colonna di tabella.
    È possibile specificare le regole di confronto di ogni colonna contenente stringhe di caratteri tramite la clausola COLLATE dell'istruzione CREATE TABLE o ALTER TABLE. È inoltre possibile specificare una regola di confronto durante la creazione di una tabella tramite SQL Server Management Studio. Se non vengono specificate regole di confronto, alla colonna verranno assegnate le regole di confronto predefinite del database.
    È inoltre possibile utilizzare l'opzione database_default nella clausola COLLATE per specificare che una colonna di una tabella temporanea utilizza le regole di confronto predefinite del database utente corrente per la connessione anziché quelle del database tempdb.
  3. In fase di casting delle regole di confronto di un'espressione.
    Tramite la clausola COLLATE è possibile eseguire il casting di un'espressione di caratteri in base a regole di confronto specifiche. Ai valori letterali e alle variabili di tipo carattere vengono assegnate le regole di confronto predefinite del database corrente. Ai riferimenti di colonna vengono assegnate le regole di confronto di definizione della colonna. Per ulteriori informazioni sulle regole di confronto di un'espressione, vedere Precedenza delle regole di confronto (Transact-SQL).

Le regole di confronto di un identificatore dipendono dal livello nel quale viene definito. 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. Agli identificatori degli oggetti di un database, quali tabelle, viste e nomi di colonna, vengono assegnate le regole di confronto predefinite del 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. Per ulteriori informazioni, vedere Identificatori.

È 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. Gli identificatori di variabili, le etichette GOTO, le stored procedure temporanee e le tabelle temporanee sono inclusi nelle regole di confronto predefinite dell'istanza.

È possibile applicare la clausola COLLATE solo ai tipi di dati char, varchar, text, nchar, nvarchar e ntext.

Le regole di confronto sono identificate in genere dal nome delle regole di confronto. L'unica eccezione è il programma di installazione, in cui anziché specificare un nome per le regole di confronto Windows viene specificata la designazione delle regole di confronto. È quindi necessario selezionare le caselle di controllo per specificare un ordinamento binario o del dizionario con o senza distinzione tra maiuscole e minuscole e tra caratteri accentati e non accentati.

È possibile eseguire la funzione di sistema fn_helpcollations per recuperare un elenco di tutti i nomi validi per le regole di confronto Windows e SQL:

SELECT *
FROM fn_helpcollations()

SQL Server supporta solo le tabelle codici supportate dal sistema operativo corrente. Quando si esegue un'azione che dipende dalle regole di confronto, le regole di confronto di SQL Server utilizzate dall'oggetto a cui si fa riferimento devono utilizzare una tabella codici supportata dal sistema operativo in esecuzione nel computer. Queste azioni includono:

  • Impostazione delle regole di confronto predefinite per un database utilizzate durante la creazione o la modifica del database.
  • Impostazione delle regole di confronto per una colonna utilizzate durante la creazione o la modifica di una tabella.
  • Durante il ripristino o il collegamento di un database, le regole di confronto predefinite del database e delle colonne o dei parametri di tipo char, varchar e text del database devono essere supportate dal sistema operativo.
    Le conversioni tra tabelle codici sono supportate per i tipi di dati char e varchar, ma non per il tipo di dati text. L'eventuale perdita di dati che si verifica durante la conversione tra tabelle codici non viene segnalata.

Se le regole di confronto specificate o adottate dall'oggetto a cui viene fatto riferimento utilizzano una tabella codici non supportata dai sistemi operativi Windows, SQL Server genera un errore.

Vedere anche

Riferimento

ALTER TABLE (Transact-SQL)
Precedenza delle regole di confronto (Transact-SQL)
Costanti (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
table (Transact-SQL)

Altre risorse

Utilizzo delle regole di confronto
Utilizzo di dati Unicode

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Nuovo contenuto
  • Aggiunta di una descrizione per l'argomento collation_name: collation_name deve essere un valore letterale. collation_name non può essere rappresentato da una variabile o un'espressione.