Supporto Unicode e delle regole di confrontoCollation and Unicode support

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure sìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Le regole di confronto di SQL ServerSQL Server forniscono regole di ordinamento e proprietà di distinzione tra maiuscole e minuscole e tra caratteri accentati e non accentati per i dati.Collations in SQL ServerSQL Server provide sorting rules, case, and accent sensitivity properties for your data. Le regole di confronto usate con dati di tipo carattere, quali char e varchar, definiscono la tabella codici e i caratteri corrispondenti che possono essere rappresentati per quel tipo di dati.Collations that are used with character data types, such as char and varchar, dictate the code page and corresponding characters that can be represented for that data type.

Sia che si installi una nuova istanza di SQL ServerSQL Server, si ripristini il backup di un database o si stabiliscano connessioni tra database server e client, è importante comprendere i requisiti delle impostazioni locali, l'ordinamento e la modalità di distinzione tra maiuscole e minuscole e tra caratteri accentati e non accentati dei dati da usare.Whether you're installing a new instance of SQL ServerSQL Server, restoring a database backup, or connecting server to client databases, it's important to understand the locale requirements, sorting order, and case and accent sensitivity of the data that you're working with. Per visualizzare l'elenco delle regole di confronto disponibili nell'istanza di SQL ServerSQL Server, vedere sys.fn_helpcollations (Transact-SQL).To list the collations that are available on your instance of SQL ServerSQL Server, see sys.fn_helpcollations (Transact-SQL).

Quando si selezionano le regole di confronto per un server, un database, una colonna o un'espressione, vengono assegnate determinate caratteristiche ai dati.When you select a collation for your server, database, column, or expression, you're assigning certain characteristics to your data. Queste caratteristiche influiscono sui risultati di molte operazioni eseguite nel database.These characteristics affect the results of many operations in the database. Ad esempio, quando viene costruita una query tramite ORDER BY, l'ordinamento del set di risultati può dipendere dalle regole di confronto applicate al database o specificate in una clausola COLLATE al livello di espressione della query.For example, when you construct a query by using ORDER BY, the sort order of your result set might depend on the collation that's applied to the database or dictated in a COLLATE clause at the expression level of the query.

Per usare in modo ottimale il supporto delle regole di confronto di SQL ServerSQL Server, si dovrebbe approfondire la conoscenza dei termini specificati in questo argomento e di come si correlano alle caratteristiche dei dati.To best use collation support in SQL ServerSQL Server, you should understand the terms that are defined in this topic and how they relate to the characteristics of your data.

Termini delle regole di confrontoCollation terms

ConfrontoCollation

Le regole di confronto specificano gli schemi di bit che rappresentano i diversi caratteri in un set di dati.A collation specifies the bit patterns that represent each character in a dataset. Le regole di confronto determinano inoltre le regole in base alle quali i dati vengono ordinati e confrontati.Collations also determine the rules that sort and compare data. SQL ServerSQL Server supporta l'archiviazione di oggetti con regole di confronto diverse in un singolo database.supports storing objects that have different collations in a single database. Per le colonne non Unicode, l'impostazione delle regole di confronto specifica la tabella codici dei dati e i caratteri che possono essere rappresentati.For non-Unicode columns, the collation setting specifies the code page for the data and which characters can be represented. Per i dati spostati tra colonne non Unicode, è necessaria la conversione dalla tabella codici di origine a quella di destinazione.The data that you move between non-Unicode columns must be converted from the source code page to the destination code page.

I risultati di un'istruzioneTransact-SQLTransact-SQL possono variare se l'istruzione viene eseguita nel contesto di database diversi che utilizzano impostazioni diverse per le regole di confronto.Transact-SQLTransact-SQL statement results can vary when the statement is run in the context of different databases that have different collation settings. Se possibile, usare regole di confronto standardizzate per l'organizzazione.If possible, use a standardized collation for your organization. In questo modo, non è necessario specificare le regole di confronto in ogni carattere o espressione Unicode.This way, you don't have to specify the collation in every character or Unicode expression. Se è necessario usare oggetti con impostazioni diverse per tabelle codici e regole di confronto, codificare le query in modo da considerare la precedenza delle regole di confronto.If you must work with objects that have different collation and code page settings, code your queries to consider the rules of collation precedence. Per altre informazioni, vedere Precedenza delle regole di confronto (Transact-SQL).For more information, see Collation Precedence (Transact-SQL).

Alle regole di confronto sono associate le opzioni seguenti: distinzione tra maiuscole e minuscole, distinzione tra caratteri accentati e non accentati, distinzione dei caratteri Kana, distinzione di larghezza e distinzione dei selettori di variazione.The options associated with a collation are case sensitivity, accent sensitivity, kana sensitivity, width sensitivity, and variation-selector sensitivity. SQL Server 2019 (15.x)SQL Server 2019 (15.x) introduce un'opzione aggiuntiva per la codifica UTF-8.introduces an additional option for UTF-8 encoding.

È possibile specificare queste opzioni aggiungendole al nome delle regole di confronto.You can specify these options by appending them to the collation name. Ad esempio, le regole di confronto Japanese_Bushu_Kakusu_100_CS_AS_KS_WS_UTF8 prevedono distinzione tra lettere maiuscole e minuscole, distinzione tra caratteri accentati e non accentati, distinzione dei caratteri Kana, distinzione di larghezza e codifica UTF-8.For example, the collation Japanese_Bushu_Kakusu_100_CS_AS_KS_WS_UTF8 is case-sensitive, accent-sensitive, kana-sensitive, width-sensitive, and UTF-8 encoded. Sempre a titolo di esempio, le regole di confronto Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS prevedono le opzioni seguenti: nessuna distinzione tra lettere maiuscole e minuscole, nessuna distinzione tra caratteri accentati e non accentati, distinzione dei caratteri Kana, distinzione di larghezza, distinzione dei selettori di variazione e usano la codifica non Unicode.As another example, the collation Japanese_Bushu_Kakusu_140_CI_AI_KS_WS_VSS is case-insensitive, accent-insensitive, kana-sensitive, width-sensitive, variation-selector-sensitive, and it uses non-Unicode encoding.

Il comportamento associato a queste opzioni è descritto nella tabella seguente:The behavior associated with these various options is described in the following table:

OpzioneOption DescrizioneDescription
Distinzione maiuscole/minuscole (_CS)Case-sensitive (_CS) Opera una distinzione tra lettere maiuscole e minuscole.Distinguishes between uppercase and lowercase letters. Se questa opzione è selezionata, le lettere minuscole precedono le versioni maiuscole corrispondenti nell'ordinamento.If this option is selected, lowercase letters sort ahead of their uppercase versions. Se questa opzione non è selezionata, le regole di confronto non fanno distinzione tra maiuscole e minuscole.If this option isn't selected, the collation is case-insensitive. Ovvero, SQL ServerSQL Server considera identiche le lettere maiuscole e minuscole ai fini dell'ordinamento.That is, SQL ServerSQL Server considers the uppercase and lowercase versions of letters to be identical for sorting purposes. È possibile selezionare in modo esplicito l'esclusione della distinzione tra maiuscole e minuscole specificando _CI.You can explicitly select case insensitivity by specifying _CI.
Distinzione caratteri accentati/non accentati (_AS)Accent-sensitive (_AS) Opera una distinzione tra caratteri accentati e non accentati.Distinguishes between accented and unaccented characters. Il carattere "a", ad esempio, non viene considerato uguale ad "ấ".For example, "a" is not equal to "ấ". Se questa opzione non è selezionata, le regole di confronto non fanno distinzione tra caratteri accentati e non accentati.If this option isn't selected, the collation is accent-insensitive. Ovvero SQL ServerSQL Server considera identici i caratteri accentati e non accentati ai fini dell'ordinamento.That is, SQL ServerSQL Server considers the accented and unaccented versions of letters to be identical for sorting purposes. È possibile selezionare in modo esplicito l'esclusione della distinzione tra caratteri accentati e non accentati specificando _AI.You can explicitly select accent insensitivity by specifying _AI.
Distinzione Kana (_KS)Kana-sensitive (_KS) Opera una distinzione tra i due tipi di caratteri Kana giapponesi, ovvero Hiragana e Katakana.Distinguishes between the two types of Japanese kana characters: Hiragana and Katakana. Se questa opzione non è selezionata, le regole di confronto non fanno distinzione tra caratteri Kana.If this option isn't selected, the collation is kana-insensitive. Ovvero SQL ServerSQL Server considera uguali i caratteri Hiragana e Katakana ai fini dell'ordinamento.That is, SQL ServerSQL Server considers Hiragana and Katakana characters to be equal for sorting purposes. Omettere questa opzione è il solo metodo per specificare di non effettuare la distinzione Kana.Omitting this option is the only method of specifying kana-insensitivity.
Distinzione larghezza (_WS)Width-sensitive (_WS) Opera una distinzione tra caratteri a larghezza intera e caratteri a metà larghezza.Distinguishes between full-width and half-width characters. Se questa opzione non è selezionata, SQL ServerSQL Server considera identiche le rappresentazioni con caratteri a larghezza intera e a metà larghezza dello stesso carattere ai fini dell'ordinamento.If this option isn't selected, SQL ServerSQL Server considers the full-width and half-width representation of the same character to be identical for sorting purposes. Omettere questa opzione è il solo metodo per specificare di non effettuare la distinzione larghezza.Omitting this option is the only method of specifying width-insensitivity.
Distinzione dei selettori di variazione (_VSS)Variation-selector-sensitive (_VSS) Opera una distinzione tra vari selettori di variazione di simboli ideografici nelle regole di confronto giapponesi Japanese_Bushu_Kakusu_140 e Japanese_XJIS_140 introdotte in SQL Server 2017 (14.x)SQL Server 2017 (14.x).Distinguishes between various ideographic variation selectors in the Japanese collations Japanese_Bushu_Kakusu_140 and Japanese_XJIS_140, which are introduced in SQL Server 2017 (14.x)SQL Server 2017 (14.x). Una sequenza di variazione è costituita da un carattere di base e da un selettore di variazione aggiuntivo.A variation sequence consists of a base character plus an additional variation selector. Se questa opzione _VSS non è selezionata, le regole di confronto non fanno distinzione tra selettori di variazione e il selettore di variazione non viene considerato nel confronto.If this _VSS option isn't selected, the collation is variation-selector-insensitive, and the variation selector isn't considered in the comparison. Ciò significa che SQL ServerSQL Server considera identici, ai fini dell'ordinamento, i caratteri basati sullo stesso carattere di base con selettori di variazione diversi.That is, SQL ServerSQL Server considers characters built upon the same base character with differing variation selectors to be identical for sorting purposes. Per altre informazioni, vedere il database delle variazioni dei simboli ideografici Unicode.For more information, see Unicode Ideographic Variation Database.

Le regole di confronto con distinzione tra selettori di variazione (_VSS) non sono supportate negli indici di ricerca full-text.Variation-selector-sensitive (_VSS) collations aren't supported in full-text search indexes. Questi indici supportano solo le opzioni Distinzione caratteri accentati/non accentati (_AS), Distinzione Kana (_KS) e Distinzione larghezza (_WS).Full-text search indexes support only Accent-Sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options. I motori CLR e XML di SQL ServerSQL Server non supportano i selettori di variazione (_VSS).SQL ServerSQL Server XML and CLR engines don't support (_VSS) Variation selectors.
Binario (_BIN)1Binary (_BIN)1 Ordina e confronta i dati nelle tabelle di SQL ServerSQL Server in base agli schemi di bit definiti per ogni carattere.Sorts and compares data in SQL ServerSQL Server tables based on the bit patterns defined for each character. L'ordinamento binario prevede la distinzione tra lettere maiuscole e minuscole e tra caratteri accentati e non accentatiBinary sort order is case-sensitive and accent-sensitive. e rappresenta inoltre il tipo di ordinamento più rapido.Binary is also the fastest sorting order. Per altre informazioni, vedere la sezione Regole di confronto binarie in questo articolo.For more information, see the Binary collations section in this article.
Punto di codice binario (_BIN2)1Binary-code point (_BIN2)1 Ordina e confronta i dati nelle tabelle di SQL ServerSQL Server in base ai punti di codice Unicode per i dati Unicode.Sorts and compares data in SQL ServerSQL Server tables based on Unicode code points for Unicode data. Per i dati non Unicode, il punto di codice binario usa confronti identici a quelli per gli ordinamenti binari.For non-Unicode data, Binary-code point uses comparisons that are identical to those for binary sorts.

Il vantaggio di usare un ordinamento con punto di codice binario è rappresentato dal fatto che non è necessario alcun riordinamento dei dati nelle applicazioni che confrontano i dati ordinati di SQL ServerSQL Server.The advantage of using a Binary-code point sort order is that no data resorting is required in applications that compare sorted SQL ServerSQL Server data. Di conseguenza, l'ordinamento con punto di codice binario consente di semplificare lo sviluppo delle applicazioni e di ottenere un possibile miglioramento delle prestazioni.As a result, a Binary-code point sort order provides simpler application development and possible performance increases. Per altre informazioni, vedere la sezione Regole di confronto binarie in questo articolo.For more information, see the Binary collations section in this article.
UTF-8 (_UTF8)UTF-8 (_UTF8) Abilita l'archiviazione dei dati con codifica UTF-8 in SQL ServerSQL Server.Enables UTF-8 encoded data to be stored in SQL ServerSQL Server. Se questa opzione non è selezionata, SQL ServerSQL Server usa il formato di codifica non Unicode predefinito per i tipi di dati applicabili.If this option isn't selected, SQL ServerSQL Server uses the default non-Unicode encoding format for the applicable data types. Per altre informazioni, vedere la sezione Supporto di UTF-8 in questo articolo.For more information, see the UTF-8 Support section in this article.

1 Se si seleziona Binario o Punto di codice binario, le opzioni Distinzione maiuscole/minuscole (_CS), Distinzione caratteri accentati/non accentati (_AS), Distinzione Kana (_KS) e Distinzione larghezza (_\WS) non sono disponibili.1 If Binary or Binary-code point is selected, the Case-sensitive (_CS), Accent-sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options are not available.

Esempi di opzioni per le regole di confrontoExamples of collation options

Le regole di confronto sono costituite da una serie di suffissi che definiscono la distinzione tra lettere maiuscole e minuscole, tra caratteri accentati e non accentati, della larghezza o dei caratteri Kana.Each collation is combined as a series of suffixes to define case-, accent-, width-, or kana-sensitivity. Gli esempi seguenti descrivono i tipi di ordinamento delle varie combinazioni di suffissi.The following examples describe sort order behavior for various combinations of suffixes.

Suffisso delle regole di confronto di WindowsWindows collation suffix Descrizione dell'ordinamentoSort order description
_BIN1_BIN1 Ordinamento binarioBinary sort
_BIN21, 2_BIN21, 2 Ordinamento con punto di codice binarioBinary-code point sort order
_CI_AI2_CI_AI2 Senza distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, senza distinzione di larghezzaCase-insensitive, accent-insensitive, kana-insensitive, width-insensitive
_CI_AI_KS2_CI_AI_KS2 Senza distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, senza distinzione di larghezzaCase-insensitive, accent-insensitive, kana-sensitive, width-insensitive
_CI_AI_KS_WS2_CI_AI_KS_WS2 Senza distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, con distinzione di larghezzaCase-insensitive, accent-insensitive, kana-sensitive, width-sensitive
_CI_AI_WS2_CI_AI_WS2 Senza distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, con distinzione di larghezzaCase-insensitive, accent-insensitive, kana-insensitive, width-sensitive
_CI_AS2_CI_AS2 Senza distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, senza distinzione di larghezzaCase-insensitive, accent-sensitive, kana-insensitive, width-insensitive
_CI_AS_KS2_CI_AS_KS2 Senza distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, senza distinzione di larghezzaCase-insensitive, accent-sensitive, kana-sensitive, width-insensitive
_CI_AS_KS_WS2_CI_AS_KS_WS2 Senza distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, con distinzione di larghezzaCase-insensitive, accent-sensitive, kana-sensitive, width-sensitive
_CI_AS_WS2_CI_AS_WS2 Senza distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, con distinzione di larghezzaCase-insensitive, accent-sensitive, kana-insensitive, width-sensitive
_CS_AI2_CS_AI2 Con distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, senza distinzione di larghezzaCase-sensitive, accent-insensitive, kana-insensitive, width-insensitive
_CS_AI_KS2_CS_AI_KS2 Con distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, senza distinzione di larghezzaCase-sensitive, accent-insensitive, kana-sensitive, width-insensitive
_CS_AI_KS_WS2_CS_AI_KS_WS2 Con distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, con distinzione di larghezzaCase-sensitive, accent-insensitive, kana-sensitive, width-sensitive
_CS_AI_WS2_CS_AI_WS2 Con distinzione tra lettere maiuscole e minuscole, senza distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, con distinzione di larghezzaCase-sensitive, accent-insensitive, kana-insensitive, width-sensitive
_CS_AS2_CS_AS2 Con distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, senza distinzione di larghezzaCase-sensitive, accent-sensitive, kana-insensitive, width-insensitive
_CS_AS_KS2_CS_AS_KS2 Con distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, senza distinzione di larghezzaCase-sensitive, accent-sensitive, kana-sensitive, width-insensitive
_CS_AS_KS_WS2_CS_AS_KS_WS2 Con distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, con distinzione dei caratteri Kana, con distinzione di larghezzaCase-sensitive, accent-sensitive, kana-sensitive, width-sensitive
_CS_AS_WS2_CS_AS_WS2 Con distinzione tra lettere maiuscole e minuscole, con distinzione tra caratteri accentati e non accentati, senza distinzione dei caratteri Kana, con distinzione di larghezzaCase-sensitive, accent-sensitive, kana-insensitive, width-sensitive

1 Se si seleziona Binario o Punto di codice binario, le opzioni Distinzione maiuscole/minuscole (_CS), Distinzione caratteri accentati/non accentati (_AS), Distinzione Kana (_KS) e Distinzione larghezza (_WS) non sono disponibili.1 If Binary or Binary-code point is selected, the Case-sensitive (_CS), Accent-sensitive (_AS), Kana-sensitive (_KS), and Width-sensitive (_WS) options aren't available.

2 L'aggiunta dell'opzione UTF-8 (_UTF8) consente la codifica dei dati Unicode con UTF-8.2 Adding the UTF-8 option (_UTF8) enables you to encode Unicode data by using UTF-8. Per altre informazioni, vedere la sezione Supporto di UTF-8 in questo articolo.For more information, see the UTF-8 Support section in this article.

Set di regole di confrontoCollation sets

InSQL ServerSQL Server sono supportati i seguenti set di regole di confronto:SQL ServerSQL Server supports the following collation sets:

Regole di confronto di WindowsWindows collations

Le regole di confronto di Windows definiscono regole per l'archiviazione dei dati di tipo carattere basate sulle impostazioni locali del sistema Windows associate.Windows collations define rules for storing character data that's based on an associated Windows system locale. Per le regole di confronto di Windows, è possibile implementare un confronto dei dati non Unicode mediante lo stesso algoritmo dei dati Unicode.For a Windows collation, you can implement a comparison of non-Unicode data by using the same algorithm as that for Unicode data. Le regole di confronto di base di Windows specificano l'alfabeto o la lingua da usare quando viene applicato l'ordinamento del dizionario.The base Windows collation rules specify which alphabet or language is used when dictionary sorting is applied. Le regole specificano anche la tabella codici usata per l'archiviazione di dati di tipo carattere non Unicode.The rules also specify the code page that's used to store non-Unicode character data. Sia l'ordinamento Unicode che quello non Unicode sono compatibili con i confronti di stringhe di una versione specifica di Windows.Both Unicode and non-Unicode sorting are compatible with string comparisons in a particular version of Windows. In questo modo viene garantita la coerenza tra i tipi di dati in SQL ServerSQL Server e gli sviluppatori possono ordinare le stringhe all'interno delle applicazioni mediante le stesse regole usate da SQL ServerSQL Server.This provides consistency across data types within SQL ServerSQL Server, and it lets developers sort strings in their applications by using the same rules that are used by SQL ServerSQL Server. Per altre informazioni, vedere Windows_collation_name (Transact-SQL).For more information, see Windows Collation Name (Transact-SQL).

Regole di confronto binarieBinary collations

Le regole di confronto binarie ordinano i dati in base alla sequenza di valori codificati definiti dalle impostazioni locali e dal tipo di dati.Binary collations sort data based on the sequence of coded values that are defined by the locale and data type. Supportano la distinzione tra maiuscole e minuscole.They're case-sensitive. In SQL ServerSQL Server le regole di confronto binarie definiscono le impostazioni locali e la tabella codici ANSI usata.A binary collation in SQL ServerSQL Server defines the locale and the ANSI code page that's used. In questo modo viene applicato un ordinamento binario.This enforces a binary sort order. Grazie alla loro semplicità, le regole di confronto binarie consentono di migliorare le prestazioni dell'applicazione.Because they're relatively simple, binary collations help improve application performance. Per i tipi di dati non Unicode, il confronto dei dati è basato sui punti di codice definiti nella tabella codici ANSI.For non-Unicode data types, data comparisons are based on the code points that are defined on the ANSI code page. Per i tipi di dati Unicode, il confronto dei dati è basato sui punti di codice Unicode.For Unicode data types, data comparisons are based on the Unicode code points. Per le regole di confronto binarie nei tipi di dati Unicode, le impostazioni locali non vengono considerate ai fini dell'ordinamento dei dati.For binary collations on Unicode data types, the locale isn't considered in data sorts. Ad esempio, l'uso di Latin_1_General_BIN e Japanese_BIN su dati Unicode restituisce risultati di ordinamento identici.For example, Latin_1_General_BIN and Japanese_BIN yield identical sorting results when they're used on Unicode data. Per altre informazioni, vedere Windows_collation_name (Transact-SQL).For more information, see Windows Collation Name (Transact-SQL).

In SQL ServerSQL Server ci sono due tipi di regole di confronto binarie:There are two types of binary collations in SQL ServerSQL Server:

  • Le regole di confronto BIN precedenti, che eseguono un confronto tra punti di codice incompleto per i dati Unicode.The legacy BIN collations, which performed an incomplete code-point-to-code-point comparison for Unicode data. Tali regole di confronto binarie legacy eseguono il confronto del primo carattere come WCHAR e quindi un confronto byte per byte.These legacy binary collations compared the first character as WCHAR, followed by a byte-by-byte comparison. Nelle regole di confronto BIN solo il primo carattere viene ordinato in base al punto di codice e i restanti caratteri vengono ordinati in base ai relativi valori di byte.In a BIN collation, only the first character is sorted according to the code point, and remaining characters are sorted according to their byte values.

  • Le regole di confronto BIN2 più recenti, che implementano un confronto tra punti di codice puro.The newer BIN2 collations, which implement a pure code-point comparison. Nelle regole di confronto BIN2 tutti i caratteri vengono ordinati in base ai relativi punti di codice.In a BIN2 collation, all characters are sorted according to their code points. Poiché la piattaforma Intel ha un'architettura little endian, i caratteri di codice Unicode vengono sempre archiviati con i byte scambiati.Because the Intel platform is a little endian architecture, Unicode code characters are always stored byte-swapped.

Regole di confronto di SQL ServerSQL Server collations

Le regole di confrontoSQL ServerSQL Server (SQL_*) garantiscono la compatibilità di ordinamento con le versioni precedenti di SQL ServerSQL Server.SQL ServerSQL Server collations (SQL_*) provide sort order compatibility with earlier versions of SQL ServerSQL Server. Le regole di ordinamento del dizionario per i dati non Unicode sono incompatibili con qualsiasi routine di ordinamento fornita dai sistemi operativi Windows.The dictionary sorting rules for non-Unicode data are incompatible with any sorting routine that's provided by Windows operating systems. Tuttavia l'ordinamento dei dati Unicode è compatibile con una versione specifica di regole di ordinamento di Windows.However, sorting Unicode data is compatible with a particular version of Windows sorting rules. Dato che le regole di confronto di SQL ServerSQL Server differiscono per i dati non Unicode e i dati Unicode, confrontando gli stessi dati vengono visualizzati risultati diversi, a seconda del tipo di dati sottostante.Because SQL ServerSQL Server collations use different comparison rules for non-Unicode and Unicode data, you see different results for comparisons of the same data, depending on the underlying data type. Per altre informazioni, vedere Nome delle regole di confronto di SQL Server (Transact-SQL).For more information, see SQL Server Collation Name (Transact-SQL).

Durante l'installazione di SQL ServerSQL Server, l'impostazione di installazione predefinita per le regole di confronto è determinata dalle impostazioni locali del sistema operativo.During SQL ServerSQL Server setup, the default installation collation setting is determined by the operating system (OS) locale. È possibile modificare le regole di confronto a livello di server durante l'installazione oppure modificando le impostazioni locali del sistema operativo prima dell'installazione.You can change the server-level collation either during setup or by changing the OS locale before installation. Per motivi di compatibilità con le versioni precedenti, le regole di confronto predefinite sono impostate sulla versione disponibile meno recente associata a impostazioni locali specifiche.For backward compatibility reasons, the default collation is set to the oldest available version that's associated with each specific locale. Non sempre, quindi, si tratta delle regole di confronto consigliate.Therefore, this isn't always the recommended collation. Per sfruttare tutti i vantaggi delle funzionalità di SQL ServerSQL Server, modificare le impostazioni di installazione predefinite per usare le regole di confronto di Windows.To take full advantage of SQL ServerSQL Server features, change the default installation settings to use Windows collations. Ad esempio, per le impostazioni locali del sistema operativo "Inglese (Stati Uniti)" (tabella codici 1252), le regole di confronto predefinite durante l'installazione sono impostate su SQL_Latin1_General_CP1_CI_AS ed è possibile modificare l'impostazione scegliendo la controparte di Windows più simile, Latin1_General_100_CI_AS_SC.For example, for the OS locale "English (United States)" (code page 1252), the default collation during setup is SQL_Latin1_General_CP1_CI_AS, and it can be changed to its closest Windows collation counterpart, Latin1_General_100_CI_AS_SC.

Nota

Quando si aggiorna un'istanza in lingua inglese di SQL ServerSQL Server, è possibile specificare le regole di confronto di SQL ServerSQL Server (SQL_*) per assicurare la compatibilità con le istanze esistenti di SQL ServerSQL Server.When you upgrade an English-language instance of SQL ServerSQL Server, you can specify SQL ServerSQL Server collations (SQL_*) for compatibility with existing instances of SQL ServerSQL Server. Poiché le regole di confronto predefinite per un'istanza di SQL ServerSQL Server vengono definite durante la configurazione, è importante specificare attentamente le impostazioni delle regole di confronto quando le condizioni riportate di seguito sono vere:Because the default collation for an instance of SQL ServerSQL Server is defined during setup, make sure that you specify the collation settings carefully when the following conditions are true:

  • Il codice dell'applicazione dipende dal comportamento di regole di confronto di SQL ServerSQL Server precedenti.Your application code depends on the behavior of previous SQL ServerSQL Server collations.
  • È necessario archiviare dati di tipo carattere in più lingue.You must store character data that reflects multiple languages.

Livelli delle regole di confrontoCollation levels

L'impostazione delle regole di confronto è supportata ai seguenti livelli di un'istanza di SQL ServerSQL Server:Setting collations are supported at the following levels of an instance of SQL ServerSQL Server:

Regole di confronto a livello di serverServer-level collations

Le regole di confronto del server predefinite vengono determinate durante l'installazione di SQL ServerSQL Server e diventano le regole predefinite per i database di sistema e per tutti i database utente.The default server collation is determined during SQL ServerSQL Server setup, and it becomes the default collation of the system databases and all user databases.

La tabella seguente illustra le designazioni delle regole di confronto predefinite determinate dalle impostazioni locali del sistema operativo, inclusi i relativi identificatori delle impostazioni locali (LCID) di Windows e SQL:The following table shows the default collation designations, as determined by the operating system (OS) locale, including their Windows and SQL Language Code Identifiers (LCID):

Impostazioni locali di WindowsWindows locale Identificatore delle impostazioni locali (LCID) di WindowsWindows LCID LCID SQLSQL LCID Regole di confronto predefiniteDefault collation
Afrikaans (Sud Africa)Afrikaans (South Africa) 0x04360x0436 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Albanese (Albania)Albanian (Albania) 0x041c0x041c 0x041c0x041c Albanian_CI_ASAlbanian_CI_AS
Alsaziano (Francia)Alsatian (France) 0x04840x0484 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Amarico (Etiopia)Amharic (Ethiopia) 0x045e0x045e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Arabo (Algeria)Arabic (Algeria) 0x14010x1401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Bahrein)Arabic (Bahrain) 0x3c010x3c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Egitto)Arabic (Egypt) 0x0c010x0c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Iraq)Arabic (Iraq) 0x08010x0801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Giordania)Arabic (Jordan) 0x2c010x2c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Kuwait)Arabic (Kuwait) 0x34010x3401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Libano)Arabic (Lebanon) 0x30010x3001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Libia)Arabic (Libya) 0x10010x1001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Marocco)Arabic (Morocco) 0x18010x1801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Oman)Arabic (Oman) 0x20010x2001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Qatar)Arabic (Qatar) 0x40010x4001 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Arabia Saudita)Arabic (Saudi Arabia) 0x04010x0401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Siria)Arabic (Syria) 0x28010x2801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Tunisia)Arabic (Tunisia) 0x1c010x1c01 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Emirati Arabi Uniti)Arabic (U.A.E.) 0x38010x3801 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Arabo (Yemen)Arabic (Yemen) 0x24010x2401 0x04010x0401 Arabic_CI_ASArabic_CI_AS
Armeno (Armenia)Armenian (Armenia) 0x042b0x042b 0x04190x0419 Latin1_General_CI_ASLatin1_General_CI_AS
Assamese (India)Assamese (India) 0x044d0x044d 0x044d0x044d Non disponibile a livello di serverNot available at server level
Azeri (Azerbaigian, alfabeto cirillico)Azeri (Azerbaijan, Cyrillic) 0x082c0x082c 0x082c0x082c Deprecato, non disponibile a livello di serverDeprecated, not available at server level
Azeri (Azerbaigian, alfabeto latino)Azeri (Azerbaijan, Latin) 0x042c0x042c 0x042c0x042c Deprecato, non disponibile a livello di serverDeprecated, not available at server level
Baschiro (Russia)Bashkir (Russia) 0x046d0x046d 0x046d0x046d Latin1_General_CI_AILatin1_General_CI_AI
Basco (Basco)Basque (Basque) 0x042d0x042d 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Bielorusso (Bielorussia)Belarusian (Belarus) 0x04230x0423 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Bengalese (Bangladesh)Bengali (Bangladesh) 0x08450x0845 0x04450x0445 Non disponibile a livello di serverNot available at server level
Bengalese (India)Bengali (India) 0x04450x0445 0x04390x0439 Non disponibile a livello di serverNot available at server level
Bosniaco (Bosnia ed Erzegovina, alfabeto cirillico)Bosnian (Bosnia and Herzegovina, Cyrillic) 0x201a0x201a 0x201a0x201a Latin1_General_CI_AILatin1_General_CI_AI
Bosniaco (Bosnia ed Erzegovina, alfabeto latino)Bosnian (Bosnia and Herzegovina, Latin) 0x141a0x141a 0x141a0x141a Latin1_General_CI_AILatin1_General_CI_AI
Bretone (Francia)Breton (France) 0x047e0x047e 0x047e0x047e Latin1_General_CI_AILatin1_General_CI_AI
Bulgaro (Bulgaria)Bulgarian (Bulgaria) 0x04020x0402 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Catalano (Catalogna)Catalan (Catalan) 0x04030x0403 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Cinese (Hong Kong - R.A.S., Repubblica popolare cinese)Chinese (Hong Kong SAR, PRC) 0x0c040x0c04 0x04040x0404 Chinese_Taiwan_Stroke_CI_ASChinese_Taiwan_Stroke_CI_AS
Cinese (RAS di Macao)Chinese (Macao SAR) 0x14040x1404 0x14040x1404 Latin1_General_CI_AILatin1_General_CI_AI
Cinese (Macao)Chinese (Macau) 0x214040x21404 0x214040x21404 Latin1_General_CI_AILatin1_General_CI_AI
Cinese (RPC)Chinese (PRC) 0x08040x0804 0x08040x0804 Chinese_PRC_CI_ASChinese_PRC_CI_AS
Cinese (RPC)Chinese (PRC) 0x208040x20804 0x208040x20804 Chinese_PRC_Stroke_CI_ASChinese_PRC_Stroke_CI_AS
Cinese (Singapore)Chinese (Singapore) 0x10040x1004 0x08040x0804 Chinese_PRC_CI_ASChinese_PRC_CI_AS
Cinese (Singapore)Chinese (Singapore) 0x210040x21004 0x208040x20804 Chinese_PRC_Stroke_CI_ASChinese_PRC_Stroke_CI_AS
Cinese (Taiwan)Chinese (Taiwan) 0x304040x30404 0x304040x30404 Chinese_Taiwan_Bopomofo_CI_ASChinese_Taiwan_Bopomofo_CI_AS
Cinese (Taiwan)Chinese (Taiwan) 0x04040x0404 0x04040x0404 Chinese_Taiwan_Stroke_CI_ASChinese_Taiwan_Stroke_CI_AS
Corso (Francia)Corsican (France) 0x04830x0483 0x04830x0483 Latin1_General_CI_AILatin1_General_CI_AI
Croato (Bosnia ed Erzegovina, alfabeto latino)Croatian (Bosnia and Herzegovina, Latin) 0x101a0x101a 0x041a0x041a Croatian_CI_ASCroatian_CI_AS
Croato (Croazia)Croatian (Croatia) 0x041a0x041a 0x041a0x041a Croatian_CI_ASCroatian_CI_AS
Ceco (Repubblica Ceca)Czech (Czech Republic) 0x04050x0405 0x04050x0405 Czech_CI_ASCzech_CI_AS
Danese (Danimarca)Danish (Denmark) 0x04060x0406 0x04060x0406 Danish_Norwegian_CI_ASDanish_Norwegian_CI_AS
Dari (Afghanistan)Dari (Afghanistan) 0x048c0x048c 0x048c0x048c Latin1_General_CI_AILatin1_General_CI_AI
Divehi (Maldive)Divehi (Maldives) 0x04650x0465 0x04650x0465 Non disponibile a livello di serverNot available at server level
Olandese (Belgio)Dutch (Belgium) 0x08130x0813 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Olandese (Paesi Bassi)Dutch (Netherlands) 0x04130x0413 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Australia)English (Australia) 0x0c090x0c09 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Belize)English (Belize) 0x28090x2809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Canada)English (Canada) 0x10090x1009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Caraibi)English (Caribbean) 0x24090x2409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (India)English (India) 0x40090x4009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Irlanda)English (Ireland) 0x18090x1809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Giamaica)English (Jamaica) 0x20090x2009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Malesia)English (Malaysia) 0x44090x4409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Nuova Zelanda)English (New Zealand) 0x14090x1409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Filippine)English (Philippines) 0x34090x3409 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Singapore)English (Singapore) 0x48090x4809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Sud Africa)English (South Africa) 0x1c090x1c09 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Trinidad e Tobago)English (Trinidad and Tobago) 0x2c090x2c09 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Regno Unito)English (United Kingdom) 0x08090x0809 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inglese (Stati Uniti)English (United States) 0x04090x0409 0x04090x0409 SQL_Latin1_General_CP1_CI_ASSQL_Latin1_General_CP1_CI_AS
Inglese (Zimbabwe)English (Zimbabwe) 0x30090x3009 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Estone (Estonia)Estonian (Estonia) 0x04250x0425 0x04250x0425 Estonian_CI_ASEstonian_CI_AS
Faroese (Fær Øer)Faroese (Faroe Islands) 0x04380x0438 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Filippino (Filippine)Filipino (Philippines) 0x04640x0464 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Finlandese (Finlandia)Finnish (Finland) 0x040b0x040b 0x040b0x040b Finnish_Swedish_CI_ASFinnish_Swedish_CI_AS
Francese (Belgio)French (Belgium) 0x080c0x080c 0x040c0x040c French_CI_ASFrench_CI_AS
Francese (Canada)French (Canada) 0x0c0c0x0c0c 0x040c0x040c French_CI_ASFrench_CI_AS
Francese (Francia)French (France) 0x040c0x040c 0x040c0x040c French_CI_ASFrench_CI_AS
Francese (Lussemburgo)French (Luxembourg) 0x140c0x140c 0x040c0x040c French_CI_ASFrench_CI_AS
Francese (Monaco)French (Monaco) 0x180c0x180c 0x040c0x040c French_CI_ASFrench_CI_AS
Francese (Svizzera)French (Switzerland) 0x100c0x100c 0x040c0x040c French_CI_ASFrench_CI_AS
Frisone (Paesi Bassi)Frisian (Netherlands) 0x04620x0462 0x04620x0462 Latin1_General_CI_AILatin1_General_CI_AI
Galiziano (Spagna)Galician (Spain) 0x04560x0456 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Georgiano (Georgia)Georgian (Georgia) 0x104370x10437 0x104370x10437 Georgian_Modern_Sort_CI_ASGeorgian_Modern_Sort_CI_AS
Georgiano (Georgia)Georgian (Georgia) 0x04370x0437 0x04190x0419 Latin1_General_CI_ASLatin1_General_CI_AS
Tedesco - ordinamento alfabetico telefonico (DIN)German - Phone Book Sort (DIN) 0x104070x10407 0x104070x10407 German_PhoneBook_CI_ASGerman_PhoneBook_CI_AS
Tedesco (Austria)German (Austria) 0x0c070x0c07 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Tedesco (Germania)German (Germany) 0x04070x0407 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Tedesco (Liechtenstein)German (Liechtenstein) 0x14070x1407 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Tedesco (Lussemburgo)German (Luxembourg) 0x10070x1007 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Tedesco (Svizzera)German (Switzerland) 0x08070x0807 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Greco (Grecia)Greek (Greece) 0x04080x0408 0x04080x0408 Greek_CI_ASGreek_CI_AS
Groenlandese (Groenlandia)Greenlandic (Greenland) 0x046f0x046f 0x04060x0406 Danish_Norwegian_CI_ASDanish_Norwegian_CI_AS
Gujarati (India)Gujarati (India) 0x04470x0447 0x04390x0439 Non disponibile a livello di serverNot available at server level
Hausa (Nigeria, alfabeto latino)Hausa (Nigeria, Latin) 0x04680x0468 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Ebraico (Israele)Hebrew (Israel) 0x040d0x040d 0x040d0x040d Hebrew_CI_ASHebrew_CI_AS
Hindi (India)Hindi (India) 0x04390x0439 0x04390x0439 Non disponibile a livello di serverNot available at server level
Ungherese (Ungheria)Hungarian (Hungary) 0x040e0x040e 0x040e0x040e Hungarian_CI_ASHungarian_CI_AS
Ungherese (ordinamento tecnico)Hungarian Technical Sort 0x1040e0x1040e 0x1040e0x1040e Hungarian_Technical_CI_ASHungarian_Technical_CI_AS
Islandese (Islanda)Icelandic (Iceland) 0x040f0x040f 0x040f0x040f Icelandic_CI_ASIcelandic_CI_AS
Igbo (Nigeria)Igbo (Nigeria) 0x04700x0470 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Indonesiano (Indonesia)Indonesian (Indonesia) 0x04210x0421 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inuktitut (Canada, alfabeto latino)Inuktitut (Canada, Latin) 0x085d0x085d 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Inuktitut (alfabeto sillabico) CanadaInuktitut (Syllabics) Canada 0x045d0x045d 0x045d0x045d Latin1_General_CI_AILatin1_General_CI_AI
Irlandese (Irlanda)Irish (Ireland) 0x083c0x083c 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Italiano (Italia)Italian (Italy) 0x04100x0410 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Italiano (Svizzera)Italian (Switzerland) 0x08100x0810 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Giapponese (Giappone XJIS)Japanese (Japan XJIS) 0x04110x0411 0x04110x0411 Japanese_CI_ASJapanese_CI_AS
Giapponese (Giappone)Japanese (Japan) 0x0404110x040411 0x404110x40411 Latin1_General_CI_AILatin1_General_CI_AI
Kannada (India)Kannada (India) 0x044b0x044b 0x04390x0439 Non disponibile a livello di serverNot available at server level
Kazako (Kazakhstan)Kazakh (Kazakhstan) 0x043f0x043f 0x043f0x043f Kazakh_90_CI_ASKazakh_90_CI_AS
Khmer (Cambogia)Khmer (Cambodia) 0x04530x0453 0x04530x0453 Non disponibile a livello di serverNot available at server level
Quiché (Guatemala)K'iche (Guatemala) 0x04860x0486 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Kinyarwanda (Ruanda)Kinyarwanda (Rwanda) 0x04870x0487 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Konkani (India)Konkani (India) 0x04570x0457 0x04390x0439 Non disponibile a livello di serverNot available at server level
Coreano (ordinamento dizionario coreano)Korean (Korea Dictionary Sort) 0x04120x0412 0x04120x0412 Korean_Wansung_CI_ASKorean_Wansung_CI_AS
Kirghiso (Kirghizistan)Kyrgyz (Kyrgyzstan) 0x04400x0440 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Lao (Repubblica popolare democratica del Laos)Lao (Lao PDR) 0x04540x0454 0x04540x0454 Non disponibile a livello di serverNot available at server level
Lettone (Lettonia)Latvian (Latvia) 0x04260x0426 0x04260x0426 Latvian_CI_ASLatvian_CI_AS
Lituano (Lituania)Lithuanian (Lithuania) 0x04270x0427 0x04270x0427 Lithuanian_CI_ASLithuanian_CI_AS
Basso sorabo (Germania)Lower Sorbian (Germany) 0x082e0x082e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Lussemburghese (Lussemburgo)Luxembourgish (Luxembourg) 0x046e0x046e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Macedone (Macedonia, Ex Repubblica Jugoslava di Macedonia)Macedonian (Macedonia, FYROM) 0x042f0x042f 0x042f0x042f Macedonian_FYROM_90_CI_ASMacedonian_FYROM_90_CI_AS
Malese (Brunei Darussalam)Malay (Brunei Darussalam) 0x083e0x083e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Malese (Malaysia)Malay (Malaysia) 0x043e0x043e 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Malayalam (India)Malayalam (India) 0x044c0x044c 0x04390x0439 Non disponibile a livello di serverNot available at server level
Maltese (Malta)Maltese (Malta) 0x043a0x043a 0x043a0x043a Latin1_General_CI_AILatin1_General_CI_AI
Maori (Nuova Zelanda)Maori (New Zealand) 0x04810x0481 0x04810x0481 Latin1_General_CI_AILatin1_General_CI_AI
Mapudungun (Cile)Mapudungun (Chile) 0x047a0x047a 0x047a0x047a Latin1_General_CI_AILatin1_General_CI_AI
Marathi (India)Marathi (India) 0x044e0x044e 0x04390x0439 Non disponibile a livello di serverNot available at server level
Mohawk (Canada)Mohawk (Canada) 0x047c0x047c 0x047c0x047c Latin1_General_CI_AILatin1_General_CI_AI
Mongolo (Mongolia)Mongolian (Mongolia) 0x04500x0450 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Mongolo (RPC)Mongolian (PRC) 0x08500x0850 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Nepalese (Nepal)Nepali (Nepal) 0x04610x0461 0x04610x0461 Non disponibile a livello di serverNot available at server level
Norvegese (Bokmål, Norvegia)Norwegian (Bokmål, Norway) 0x04140x0414 0x04140x0414 Latin1_General_CI_AILatin1_General_CI_AI
Norvegese (Nynorsk, Norvegia)Norwegian (Nynorsk, Norway) 0x08140x0814 0x04140x0414 Latin1_General_CI_AILatin1_General_CI_AI
Occitano (Francia)Occitan (France) 0x04820x0482 0x040c0x040c French_CI_ASFrench_CI_AS
Oriya (India)Oriya (India) 0x04480x0448 0x04390x0439 Non disponibile a livello di serverNot available at server level
Pashto (Afghanistan)Pashto (Afghanistan) 0x04630x0463 0x04630x0463 Non disponibile a livello di serverNot available at server level
Persiano (Iran)Persian (Iran) 0x04290x0429 0x04290x0429 Latin1_General_CI_AILatin1_General_CI_AI
Polacco (Polonia)Polish (Poland) 0x04150x0415 0x04150x0415 Polish_CI_ASPolish_CI_AS
Portoghese (Brasile)Portuguese (Brazil) 0x04160x0416 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Portoghese (Portogallo)Portuguese (Portugal) 0x08160x0816 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Punjabi (India)Punjabi (India) 0x04460x0446 0x04390x0439 Non disponibile a livello di serverNot available at server level
Quechua (Bolivia)Quechua (Bolivia) 0x046b0x046b 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Quechua (Ecuador)Quechua (Ecuador) 0x086b0x086b 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Quechua (Perù)Quechua (Peru) 0x0c6b0x0c6b 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Romeno (Romania)Romanian (Romania) 0x04180x0418 0x04180x0418 Romanian_CI_ASRomanian_CI_AS
Romancio (Svizzera)Romansh (Switzerland) 0x04170x0417 0x04170x0417 Latin1_General_CI_AILatin1_General_CI_AI
Russo (Russia)Russian (Russia) 0x04190x0419 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Sami (Inari, Finlandia)Sami (Inari, Finland) 0x243b0x243b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Sami (Lule, Norvegia)Sami (Lule, Norway) 0x103b0x103b 0x043b0x043b Latin1_General_CI_AILatin1_General_CI_AI
Sami (Lule, Svezia)Sami (Lule, Sweden) 0x143b0x143b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Sami (settentrionale, Finlandia)Sami (Northern, Finland) 0x0c3b0x0c3b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Sami (settentrionale, Norvegia)Sami (Northern, Norway) 0x043b0x043b 0x043b0x043b Latin1_General_CI_AILatin1_General_CI_AI
Sami (settentrionale, Svezia)Sami (Northern, Sweden) 0x083b0x083b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Sami (Skolt, Finlandia)Sami (Skolt, Finland) 0x203b0x203b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Sami (meridionale, Norvegia)Sami (Southern, Norway) 0x183b0x183b 0x043b0x043b Latin1_General_CI_AILatin1_General_CI_AI
Sami (meridionale, Svezia)Sami (Southern, Sweden) 0x1c3b0x1c3b 0x083b0x083b Latin1_General_CI_AILatin1_General_CI_AI
Sanscrito (India)Sanskrit (India) 0x044f0x044f 0x04390x0439 Non disponibile a livello di serverNot available at server level
Serbo (Bosnia ed Erzegovina, alfabeto cirillico)Serbian (Bosnia and Herzegovina, Cyrillic) 0x1c1a0x1c1a 0x0c1a0x0c1a Latin1_General_CI_AILatin1_General_CI_AI
Serbo (Bosnia ed Erzegovina, alfabeto latino)Serbian (Bosnia and Herzegovina, Latin) 0x181a0x181a 0x081a0x081a Latin1_General_CI_AILatin1_General_CI_AI
Serbo (Serbia, alfabeto cirillico)Serbian (Serbia, Cyrillic) 0x0c1a0x0c1a 0x0c1a0x0c1a Latin1_General_CI_AILatin1_General_CI_AI
Serbo (Serbia, alfabeto latino)Serbian (Serbia, Latin) 0x081a0x081a 0x081a0x081a Latin1_General_CI_AILatin1_General_CI_AI
Sotho del nord/Sotho settentrionale (Sudafrica)Sesotho sa Leboa/Northern Sotho (South Africa) 0x046c0x046c 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
SeTswana/Tswana (Sudafrica)Setswana/Tswana (South Africa) 0x04320x0432 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Singalese (Sri Lanka)Sinhala (Sri Lanka) 0x045b0x045b 0x04390x0439 Non disponibile a livello di serverNot available at server level
Slovacco (Slovacchia)Slovak (Slovakia) 0x041b0x041b 0x041b0x041b Slovak_CI_ASSlovak_CI_AS
Sloveno (Slovenia)Slovenian (Slovenia) 0x04240x0424 0x04240x0424 Slovenian_CI_ASSlovenian_CI_AS
Spagnolo (Argentina)Spanish (Argentina) 0x2c0a0x2c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Bolivia)Spanish (Bolivia) 0x400a0x400a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Cile)Spanish (Chile) 0x340a0x340a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Colombia)Spanish (Colombia) 0x240a0x240a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Costa Rica)Spanish (Costa Rica) 0x140a0x140a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Repubblica Dominicana)Spanish (Dominican Republic) 0x1c0a0x1c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Ecuador)Spanish (Ecuador) 0x300a0x300a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (El Salvador)Spanish (El Salvador) 0x440a0x440a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Guatemala)Spanish (Guatemala) 0x100a0x100a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Honduras)Spanish (Honduras) 0x480a0x480a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Messico)Spanish (Mexico) 0x080a0x080a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Nicaragua)Spanish (Nicaragua) 0x4c0a0x4c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Panama)Spanish (Panama) 0x180a0x180a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Paraguay)Spanish (Paraguay) 0x3c0a0x3c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Perù)Spanish (Peru) 0x280a0x280a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Porto Rico)Spanish (Puerto Rico) 0x500a0x500a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Spagna)Spanish (Spain) 0x0c0a0x0c0a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Spagna, ordinamento tradizionale)Spanish (Spain, Traditional Sort) 0x040a0x040a 0x040a0x040a Traditional_Spanish_CI_ASTraditional_Spanish_CI_AS
Spagnolo (Stati Uniti)Spanish (United States) 0x540a0x540a 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Spagnolo (Uruguay)Spanish (Uruguay) 0x380a0x380a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Spagnolo (Venezuela)Spanish (Venezuela) 0x200a0x200a 0x0c0a0x0c0a Modern_Spanish_CI_ASModern_Spanish_CI_AS
Swahili (Kenya)Swahili (Kenya) 0x04410x0441 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Svedese (Finlandia)Swedish (Finland) 0x081d0x081d 0x040b0x040b Finnish_Swedish_CI_ASFinnish_Swedish_CI_AS
Svedese (Svezia)Swedish (Sweden) 0x041d0x041d 0x040b0x040b Finnish_Swedish_CI_ASFinnish_Swedish_CI_AS
Siriano (Siria)Syriac (Syria) 0x045a0x045a 0x045a0x045a Non disponibile a livello di serverNot available at server level
Tagico (Tajikistan)Tajik (Tajikistan) 0x04280x0428 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Tamazight (Algeria, alfabeto latino)Tamazight (Algeria, Latin) 0x085f0x085f 0x085f0x085f Latin1_General_CI_AILatin1_General_CI_AI
Tamil (India)Tamil (India) 0x04490x0449 0x04390x0439 Non disponibile a livello di serverNot available at server level
Tartaro (Russia)Tatar (Russia) 0x04440x0444 0x04440x0444 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Telugu (India)Telugu (India) 0x044a0x044a 0x04390x0439 Non disponibile a livello di serverNot available at server level
Thai (Thailandia)Thai (Thailand) 0x041e0x041e 0x041e0x041e Thai_CI_ASThai_CI_AS
Tibetano (RPC)Tibetan (PRC) 0x04510x0451 0x04510x0451 Non disponibile a livello di serverNot available at server level
Turco (Turchia)Turkish (Turkey) 0x041f0x041f 0x041f0x041f Turkish_CI_ASTurkish_CI_AS
Turcomanno (Turkmenistan)Turkmen (Turkmenistan) 0x04420x0442 0x04420x0442 Latin1_General_CI_AILatin1_General_CI_AI
Uiguro (RPC)Uighur (PRC) 0x04800x0480 0x04800x0480 Latin1_General_CI_AILatin1_General_CI_AI
Ucraino (Ucraina)Ukrainian (Ukraine) 0x04220x0422 0x04220x0422 Ukrainian_CI_ASUkrainian_CI_AS
Alto sorabo (Germania)Upper Sorbian (Germany) 0x042e0x042e 0x042e0x042e Latin1_General_CI_AILatin1_General_CI_AI
Urdu (Pakistan)Urdu (Pakistan) 0x04200x0420 0x04200x0420 Latin1_General_CI_AILatin1_General_CI_AI
Uzbeco (Uzbekistan, alfabeto cirillico)Uzbek (Uzbekistan, Cyrillic) 0x08430x0843 0x04190x0419 Cyrillic_General_CI_ASCyrillic_General_CI_AS
Uzbeco (Uzbekistan, alfabeto latino)Uzbek (Uzbekistan, Latin) 0x04430x0443 0x04430x0443 Uzbek_Latin_90_CI_ASUzbek_Latin_90_CI_AS
Vietnamita (Vietnam)Vietnamese (Vietnam) 0x042a0x042a 0x042a0x042a Vietnamese_CI_ASVietnamese_CI_AS
Gallese (Regno Unito)Welsh (United Kingdom) 0x04520x0452 0x04520x0452 Latin1_General_CI_AILatin1_General_CI_AI
Wolof (Senegal)Wolof (Senegal) 0x04880x0488 0x040c0x040c French_CI_ASFrench_CI_AS
Xhosa/isiXhosa (Sudafrica)Xhosa/isiXhosa (South Africa) 0x04340x0434 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Jakuto (Russia)Yakut (Russia) 0x04850x0485 0x04850x0485 Latin1_General_CI_AILatin1_General_CI_AI
Yi (RPC)Yi (PRC) 0x04780x0478 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Yoruba (Nigeria)Yoruba (Nigeria) 0x046a0x046a 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS
Zulu/isiZulu (Sudafrica)Zulu/isiZulu (South Africa) 0x04350x0435 0x04090x0409 Latin1_General_CI_ASLatin1_General_CI_AS

Nota

Non è possibile selezionare regole di confronto solo Unicode durante l'installazione di SQL ServerSQL Server, perché non sono supportate come regole di confronto a livello server.Unicode-only collations can't be selected during SQL ServerSQL Server setup, because they aren't supported as server-level collations.

Una volta che le regole di confronto sono state assegnate al server, è possibile modificarle solo esportando tutti i dati e gli oggetti di database, ricostruendo il database master e importando tutti i dati e gli oggetti di database.After you've assigned a collation to the server, you can change it only by exporting all database objects and data, rebuilding the master database, and importing all database objects and data. Anziché modificare le regole di confronto predefinite di un'istanza di SQL ServerSQL Server, è possibile specificare quelle desiderate quando si creano nuovi database o colonne di database.Instead of changing the default collation of an instance of SQL ServerSQL Server, you can specify the desired collation when you create a new database or database column.

Per eseguire una query sulle regole di confronto del server per un'istanza di SQL ServerSQL Server, usare la funzione SERVERPROPERTY:To query the server collation for an instance of SQL ServerSQL Server, use the SERVERPROPERTY function:

SELECT CONVERT(varchar, SERVERPROPERTY('collation'));

Per eseguire una query sul server per tutte le regole di confronto disponibili, usare la funzione predefinita fn_helpcollations() seguente:To query the server for all available collations, use the following fn_helpcollations() built-in function:

SELECT * FROM sys.fn_helpcollations();

Regole di confronto a livello di databaseDatabase-level collations

Quando si crea o si modifica un database, è possibile usare la clausola COLLATE dell'istruzione CREATE DATABASE o ALTER DATABASE per specificare le regole di confronto predefinite del database.When you create or modify a database, you can use the COLLATE clause of the CREATE DATABASE or ALTER DATABASE statement to specify the default database collation. Se non viene specificata alcuna regola di confronto, al database vengono assegnate le regole di confronto del server.If no collation is specified, the database is assigned the server collation.

Non è possibile modificare le regole di confronto dei database di sistema a meno che non vengano modificate per il server.You can't change the collation of system databases unless you change the collation for the server.

Le regole di confronto del database vengono usate per tutti i metadati nel database e rappresentano l'impostazione predefinita per tutte le colonne stringa, gli oggetti temporanei, i nomi di variabili e qualsiasi altra stringa usata nel database.The database collation is used for all metadata in the database, and the collation is the default for all string columns, temporary objects, variable names, and any other strings used in the database. Quando le regole di confronto di un database utente vengono modificate, è possibile che si verifichino conflitti tra le regole di confronto quando vengono eseguite query nelle tabelle temporanee di accesso al database.When you change the collation of a user database, there can be collation conflicts when queries in the database access temporary tables. Le tabelle temporanee sono sempre archiviate nel database di sistema tempdb, che usa le regole di confronto per l'istanza.Temporary tables are always stored in the tempdb system database, which uses the collation for the instance. L'esecuzione di query di confronto dei dati di tipo carattere tra database utente e tempdb potrebbe non riuscire se le regole di confronto causano un conflitto nella valutazione dei dati di tipo carattere.Queries that compare character data between the user database and tempdb might fail if the collations cause a conflict in evaluating the character data. È possibile risolvere il problema specificando la clausola COLLATE nella query.You can resolve this issue by specifying the COLLATE clause in the query. Per altre informazioni, vedere COLLATE (Transact-SQL).For more information, see COLLATE (Transact-SQL).

Nota

Non è possibile modificare le regole di confronto dopo che il database è stato creato in Database SQL di AzureAzure SQL Database.You can't change the collation after the database has been created on Database SQL di AzureAzure SQL Database.

È possibile modificare le regole di confronto di un database utente usando un'istruzione ALTER DATABASE simile alla seguente:You can change the collation of a user database by using an ALTER DATABASE statement that's similar to the following:

ALTER DATABASE myDB COLLATE Greek_CS_AI;

Importante

Le modifiche apportate alle regole di confronto a livello di database non influiscono sulle regole di confronto a livello di colonna o di espressione.Altering the database-level collation doesn't affect column-level or expression-level collations.

È possibile recuperare le regole di confronto correnti di un database usando un'istruzione simile alla seguente:You can retrieve the current collation of a database by using a statement that's similar to the following:

SELECT CONVERT (VARCHAR(50), DATABASEPROPERTYEX('database_name','collation'));

Regole di confronto a livello di colonnaColumn-level collations

Quando una tabella viene creata o modificata, è possibile specificare regole di confronto per ciascuna colonna di stringhe di caratteri usando la clausola COLLATE.When you create or alter a table, you can specify collations for each character-string column by using the COLLATE clause. Se non si specificano regole di confronto, alla colonna verranno assegnate le regole di confronto predefinite del database.If you don't specify a collation, the column is assigned the default collation of the database.

È possibile modificare le regole di confronto di una colonna usando un'istruzione ALTER TABLE simile alla seguente:You can change the collation of a column by using an ALTER TABLE statement that's similar to the following:

ALTER TABLE myTable ALTER COLUMN mycol NVARCHAR(10) COLLATE Greek_CS_AI;

Regole di confronto a livello di espressioneExpression-level collations

Le regole di confronto a livello di espressione vengono impostate al momento dell'esecuzione di un'istruzione e interessano la modalità di restituzione di un set di risultati.Expression-level collations are set when a statement is run, and they affect the way a result set is returned. In questo modo i risultati dell'ordinamento di ORDER BY possono essere specifici delle impostazioni locali.This enables ORDER BY sort results to be locale-specific. Per implementare regole di confronto a livello di espressione, usare una clausola COLLATE simile alla seguente:To implement expression-level collations, use a COLLATE clause such as the following:

SELECT name FROM customer ORDER BY name COLLATE Latin1_General_CS_AI;    

Impostazioni localiLocale

Le impostazioni locali rappresentano un set di informazioni associate a un paese o a una lingua.A locale is a set of information that's associated with a location or a culture. Queste informazioni possono includere il nome e l'identificatore della lingua parlata, l'alfabeto usato per la scrittura della lingua e le convenzioni culturali.The information can include the name and identifier of the spoken language, the script that's used to write the language, and cultural conventions. Le regole di confronto possono essere associate a uno o più set di impostazioni locali.Collations can be associated with one or more locales. Per altre informazioni, vedere ID delle impostazioni locali assegnati da Microsoft.For more information, see Locale IDs Assigned by Microsoft.

Tabella codiciCode page

Una tabella codici è un set ordinato di caratteri di uno script specifico nel quale a ogni carattere viene associato un indice numerico o un valore punto di codice.A code page is an ordered set of characters of a given script in which a numeric index, or code point value, is associated with each character. Per tabella codici di Windows si intende in genere un set di caratteri o charset.A Windows code page is typically referred to as a character set or a charset. Queste tabelle vengono usate per supportare i set di caratteri e i layout di tastiera impiegati per le diverse impostazioni locali di Windows.Code pages are used to provide support for the character sets and keyboard layouts that are used by different Windows system locales.

OrdinamentoSort order

L'ordinamento specifica il modo in cui vengono ordinati i valori dei dati.Sort order specifies how data values are sorted. L'ordine influisce sui risultati del confronto dei dati stessi.The order affects the results of data comparison. I dati vengono ordinati tramite regole di confronto e possono essere ottimizzati tramite indici.Data is sorted by using collations, and it can be optimized by using indexes.

Supporto UnicodeUnicode support

Unicode è uno standard per il mapping dei punti di codice ai caratteri.Unicode is a standard for mapping code points to characters. Dato che è progettato per supportare tutti i caratteri di tutte le lingue del mondo, non sono necessarie tabelle codici diverse per gestire set di caratteri diversi.Because it's designed to cover all the characters of all the languages of the world, you don't need different code pages to handle different sets of characters.

Nozioni fondamentali su UnicodeUnicode basics

L'archiviazione di dati in lingue diverse all'interno di un singolo database presenta difficoltà di gestione se si usano solo tabelle codici e dati di tipo carattere.Storing data in multiple languages within one database is difficult to manage when you use only character data and code pages. È anche difficile trovare una singola tabella codici per il database che contenga tutti i caratteri necessari specifici della lingua.It's also difficult to find one code page for the database that can store all the required language-specific characters. È inoltre difficile garantire che i caratteri speciali letti o aggiornati da una varietà di client che eseguono tabelle codici diverse vengano convertiti correttamente.Additionally, it's difficult to guarantee the correct translation of special characters when they're being read or updated by a variety of clients that are running various code pages. È consigliabile che i database che supportano client internazionali usino sempre tipi di dati Unicode invece di tipi di dati non Unicode.Databases that support international clients should always use Unicode data types instead of non-Unicode data types.

Si consideri, ad esempio, un database di clienti dell'America del Nord per cui è necessario gestire tre lingue principali:For example, consider a database of customers in North America that must handle three major languages:

  • Nomi e indirizzi in spagnolo per il MessicoSpanish names and addresses for Mexico
  • Nomi e indirizzi in francese per il QuebecFrench names and addresses for Quebec
  • Nomi e indirizzi in inglese per il resto del Canada e gli Stati UnitiEnglish names and addresses for the rest of Canada and the United States

Se si usano solo tabelle codici e colonne di tipo carattere, è necessario assicurarsi che il database sia installato con una tabella codici in grado di gestire i caratteri delle tre lingue.When you use only character columns and code pages, you must take care to ensure that the database is installed with a code page that will handle the characters of all three languages. È anche necessario garantire che i caratteri di una qualsiasi delle lingue vengano convertiti correttamente quando sono letti dai client che eseguono una tabella codici di un'altra lingua.You must also take care to guarantee the correct translation of characters from any of the languages when the characters are read by clients that are running a code page for another language.

Nota

Le tabelle codici usate da un client vengono determinate in base alle impostazioni del sistema operativo.The code pages that a client uses are determined by the operating system (OS) settings. Per impostare le tabelle codici del client nel sistema operativo Windows usare l'opzione Impostazioni internazionali del Pannello di controllo.To set client code pages on the Windows operating system, use Regional Settings in Control Panel.

È difficile selezionare una tabella codici per i dati di tipo carattere in grado di supportare tutti i caratteri necessari per gli utenti di tutto il mondo.It would be difficult to select a code page for character data types that will support all the characters that are required by a worldwide audience. Il modo più semplice per gestire dati di tipo carattere in database internazionali consiste nell'usare sempre un tipo di dati che supporta Unicode.The easiest way to manage character data in international databases is to always use a data type that supports Unicode.

Tipi di dati UnicodeUnicode data types

Se vengono archiviati dati di tipo carattere che riflettono più lingue in SQL ServerSQL Server (da SQL Server 2005 (9.x)SQL Server 2005 (9.x) a SQL Server 2017SQL Server 2017), usare tipi di dati Unicode (nchar, nvarchar e ntext) anziché tipi di dati non Unicode (char, varchar e text).If you store character data that reflects multiple languages in SQL ServerSQL Server (SQL Server 2005 (9.x)SQL Server 2005 (9.x) through SQL Server 2017SQL Server 2017), use Unicode data types (nchar, nvarchar, and ntext) instead of non-Unicode data types (char, varchar, and text).

Nota

Per i tipi di dati Unicode, Motore di databaseDatabase Engine può rappresentare un massimo di 65.535 caratteri con UCS-2 o l'intera gamma Unicode (1.114.111 caratteri), se vengono usati caratteri supplementari.For Unicode data types, the Motore di databaseDatabase Engine can represent up to 65,535 characters using UCS-2, or the full Unicode range (‭1,114,111‬ characters) if supplementary characters are used. Per altre informazioni sull'abilitazione dei caratteri supplementari, vedere Caratteri supplementari.For more information about enabling supplementary characters, see Supplementary Characters.

In alternativa, a partire da SQL Server 2019 (15.x)SQL Server 2019 (15.x), se si usano regole di confronto abilitate per UTF-8 (_UTF8), i tipi di dati in precedenza non Unicode (char e varchar) diventano tipi di dati Unicode (UTF-8).Alternatively, starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x), if a UTF-8 enabled collation (_UTF8) is used, previously non-Unicode data types (char and varchar) become Unicode (UTF-8) data types. SQL Server 2019 (15.x)SQL Server 2019 (15.x) non modifica il comportamento dei tipi di dati Unicode (UTF-16) esistenti in precedenza (nchar, nvarchar e ntext).doesn't change the behavior of previously existing Unicode (UTF-16) data types (nchar, nvarchar, and ntext). Per altre informazioni, vedere Differenze nell'archiviazione tra UTF-8 e UTF-16.For more information, see Storage differences between UTF-8 and UTF-16.

Considerazioni su UnicodeUnicode considerations

Ai tipi di dati non Unicode sono associate numerose limitazioni,Significant limitations are associated with non-Unicode data types. perché nei computer non Unicode è disponibile una sola tabella codici.This is because a non-Unicode computer is limited to using a single code page. Usando Unicode è possibile ottenere prestazioni migliori, in quanto richiede un minor numero di conversioni tramite la tabella codici.You might experience performance gain by using Unicode, because it requires fewer code-page conversions. Le regole di confronto Unicode devono essere selezionate singolarmente a livello di database, di colonna o di espressione perché non sono supportate a livello di server.Unicode collations must be selected individually at the database, column, or expression level because they aren't supported at the server level.

Quando si spostano dati da un server a un client, le regole di confronto del server potrebbero non essere riconosciute dai driver client meno recenti.When you move data from a server to a client, your server collation might not be recognized by older client drivers. Questa situazione può verificarsi quando si spostano dati da un server Unicode a un client non Unicode.This can occur when you move data from a Unicode server to a non-Unicode client. La migliore opzione potrebbe consistere nell'aggiornare il sistema operativo client affinché vengano aggiornate le regole di confronto del sistema sottostanti.Your best option might be to upgrade the client operating system so that the underlying system collations are updated. Se nel client è installato il software client del database, è possibile applicare un aggiornamento dei servizi a tale software.If the client has database client software installed, you might consider applying a service update to the database client software.

Suggerimento

È anche possibile tentare di usare regole di confronto diverse per i dati nel server.You can also try to use a different collation for the data on the server. Scegliere regole di confronto con mapping a una tabella codici nel client.Choose a collation that maps to a code page on the client.

Per usare le regole di confronto UTF-16 disponibili in SQL ServerSQL Server (da SQL Server 2012 (11.x)SQL Server 2012 (11.x) a SQL Server 2017SQL Server 2017) e migliorare la ricerca e l'ordinamento di alcuni caratteri Unicode (solo regole di confronto Windows), è possibile selezionare una delle regole di confronto dei caratteri supplementari (_SC) o una delle regole di confronto versione 140.To use the UTF-16 collations that are available in SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017) to improve searching and sorting of some Unicode characters (Windows collations only), you can select either one of the supplementary characters (_SC) collations or one of the version 140 collations.

Per usare le regole di confronto UTF-8 disponibili in SQL Server 2019 (15.x)SQL Server 2019 (15.x) e migliorare la ricerca e l'ordinamento di alcuni caratteri Unicode (solo regole di confronto Windows), è necessario selezionare regole di confronto abilitate per la codifica UTF-8 (_UTF8).To use the UTF-8 collations that are available in SQL Server 2019 (15.x)SQL Server 2019 (15.x), and to improve searching and sorting of some Unicode characters (Windows collations only), you must select UTF-8 encoding-enabled collations(_UTF8).

  • Il flag UTF8 può essere applicato a:The UTF8 flag can be applied to:

    • Regole di confronto versione 90Version 90 collations

      Nota

      Solo quando esistono già regole di confronto che riconoscono i caratteri supplementari (_SC) o con distinzione tra selettori di variazione (_VSS) in questa versione.Only when supplementary characters (_SC) or variation-selector-sensitive (_VSS) aware collations already exist in this version.

    • Regole di confronto versione 100Version 100 collations
    • Regole di confronto versione 140Version 140 collations
    • Regole di confronto BIN21BIN21 binary collation
  • Il flag UTF8 non può essere applicato a:The UTF8 flag can't be applied to:

    • Regole di confronto versione 90 che non supportano caratteri supplementari (_SC) o con distinzione tra selettori di variazione (_VSS)Version 90 collations that don't support supplementary characters (_SC) or variation-selector-sensitive (_VSS)
    • Regole di confronto binarie BIN o BIN22The BIN or BIN22 binary collations
    • Regole di confronto di SQL_*The SQL_* collations

1 A partire da SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3.1 Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3. In SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 3.0 le regole di confronto UTF8_BIN2 sono state sostituite con Latin1_General_100_BIN2_UTF8.SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 3.0 replaced collation UTF8_BIN2 with Latin1_General_100_BIN2_UTF8.
2 Fino a SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3.2 Up to with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.3.

Per valutare i problemi relativi all'utilizzo di tipi di dati Unicode o non Unicode, è necessario eseguire il test dello scenario per verificare le differenze di prestazioni nell'ambiente specifico.To evaluate issues that are related to using Unicode or non-Unicode data types, test your scenario to measure performance differences in your environment. È consigliabile standardizzare le regole di confronto usate nei sistemi presenti nell'ambito dell'organizzazione e distribuire server e client Unicode laddove possibile.It's a good practice to standardize the collation that's used on systems across your organization, and to deploy Unicode servers and clients wherever possible.

In molti casi SQL ServerSQL Server interagisce con altri server o client e l'organizzazione può usare più standard di accesso ai dati tra applicazioni e istanze del server.In many situations, SQL ServerSQL Server interacts with other servers or clients, and your organization might use multiple data-access standards between applications and server instances. I clientSQL ServerSQL Server sono principalmente di due tipi:SQL ServerSQL Server clients are one of two main types:

  • Client Unicode che usano OLE DB e ODBC (Open Database Connectivity) versione 3.7 o successive.Unicode clients that use OLE DB and Open Database Connectivity (ODBC) version 3.7 or later.
  • Client non Unicode che usano DB-Library e ODBC versione 3.6 o precedenti.Non-Unicode clients that use DB-Library and ODBC version 3.6 or earlier.

Nella tabella seguente sono riportate informazioni sull'uso di dati multilingue con diverse combinazioni di server Unicode e non Unicode:The following table provides information about using multilingual data with various combinations of Unicode and non-Unicode servers:

ServerServer ClientClient Vantaggi o limitazioniBenefits or limitations
UnicodeUnicode UnicodeUnicode Visto che i dati Unicode vengono usati in tutto il sistema, questo scenario offre prestazioni ottimali e la migliore protezione da eventuali danni ai dati recuperati.Because Unicode data is used throughout the system, this scenario provides the best performance and protection from corruption of retrieved data. Si applica ad ADO (ActiveX Data Objects), OLE DB e ODBC versione 3.7 o successive.This is the situation with ActiveX Data Objects (ADO), OLE DB, and ODBC version 3.7 or later.
UnicodeUnicode Non UnicodeNon-Unicode In questo scenario, in particolare con le connessioni tra un server che esegue un sistema operativo più recente e un client in cui è in esecuzione una versione precedente di SQL ServerSQL Server o un sistema operativo meno recente, possono riscontrarsi limitazioni o errori quando si spostano i dati in un computer client.In this scenario, especially with connections between a server that's running a newer operating system and a client that's running an earlier version of SQL ServerSQL Server, or on an older operating system, there can be limitations or errors when you move data to a client computer. Per convertire i dati si tenta il mapping tra i dati Unicode presenti nel server e una tabella codici corrispondente nel client non Unicode.Unicode data on the server tries to map to a corresponding code page on the non-Unicode client to convert the data.
Non UnicodeNon-Unicode UnicodeUnicode Non si tratta di una configurazione ideale per l'uso di dati multilingue.This isn't an ideal configuration for using multilingual data. Non è possibile scrivere dati Unicode nel server non UnicodeYou can't write Unicode data to the non-Unicode server. e potrebbero verificarsi problemi all'invio dei dati ai server che non rientrano nella tabella codici del server.Problems are likely to occur when data is sent to servers that are outside the server's code page.
Non UnicodeNon-Unicode Non UnicodeNon-Unicode Si tratta di uno scenario che presenta numerose limitazioni per i dati multilingue.This is a very limiting scenario for multilingual data. È possibile usare solo una tabella codici.You can use only a single code page.

Caratteri supplementariSupplementary characters

L'Unicode Consortium assegna a ogni carattere un punto di codice univoco, che corrisponde a un valore nell'intervallo 000000-10FFFF.The Unicode Consortium allocates to each character a unique code point, which is a value in the range 000000–10FFFF. I caratteri usati più di frequente hanno valori dei punti di codice nell'intervallo 000000-00FFFF (65.535 caratteri), compresi in una parola a 8 bit o a 16 bit in memoria e su disco.The most frequently used characters have code point values in the range 000000–00FFFF (65,535 characters) which fit into an 8-bit or 16-bit word in memory and on-disk. Questo intervallo viene in genere designato come Basic Multilingual Plane (BMP).This range is usually designated as the Basic Multilingual Plane (BMP).

L'Unicode Consortium ha tuttavia stabilito 16 "piani" aggiuntivi di caratteri, ognuno con le stesse dimensioni di BMP.But the Unicode Consortium has established 16 additional "planes" of characters, each the same size as the BMP. Questa definizione offre a Unicode la possibilità di rappresentare 1.114.112 caratteri (ovvero, 216 * 17 caratteri) nell'intervallo di punti di codice 000000-10FFFF.This definition allows Unicode the potential to represent 1,114,112 characters (that is, 216 * 17 characters) within the code point range 000000–10FFFF. I caratteri con valori di punti di codice maggiori di 00FFFF richiedono da due a quattro parole a 8 bit consecutive (UTF-8) o due parole a 16 bit consecutive (UTF-16).Characters with code point values larger than 00FFFF require two to four consecutive 8-bit words (UTF-8), or two consecutive 16-bit words (UTF-16). Questi caratteri posizionati oltre BMP sono denominati caratteri supplementari e le parole a 8 bit o a 16 bit consecutive aggiuntive sono denominate coppie di surrogati.These characters located beyond the BMP are called supplementary characters, and the additional consecutive 8-bit or 16-bit words are called surrogate pairs. Per altre informazioni su caratteri supplementari, surrogati e coppie di surrogati, vedere lo standard Unicode.For more information about supplementary characters, surrogates, and surrogate pairs, refer to the Unicode Standard.

SQL ServerSQL Server fornisce tipi di dati come nchar e nvarchar per archiviare i dati Unicode nell'intervallo BMP (000000-00FFFF), che viene codificato da Motore di databaseDatabase Engine tramite UCS-2.provides data types such as nchar and nvarchar to store Unicode data in the BMP range (000000–00FFFF), which the Motore di databaseDatabase Engine encodes using UCS-2.

In SQL Server 2012 (11.x)SQL Server 2012 (11.x) è stata introdotta una nuova famiglia di regole di confronto per caratteri supplementari (_SC) utilizzabili con i tipi di dati nchar, nvarchar e sql_variant per rappresentare l'intera gamma di caratteri Unicode (000000-10FFFF).SQL Server 2012 (11.x)SQL Server 2012 (11.x) introduced a new family of supplementary character (_SC) collations that can be used with the nchar, nvarchar, and sql_variant data types to represent the full Unicode character range (000000–10FFFF). Esempio: Latin1_General_100_CI_AS_SC o, se si usano regole di confronto per il giapponese, Japanese_Bushu_Kakusu_100_CI_AS_SC.For example: Latin1_General_100_CI_AS_SC or, if you're using a Japanese collation, Japanese_Bushu_Kakusu_100_CI_AS_SC.

SQL Server 2019 (15.x)SQL Server 2019 (15.x) estende il supporto dei caratteri supplementari ai tipi di dati char e varchar con le nuove regole di confronto abilitate per UTF-8 (_UTF8).extends supplementary character support to the char and varchar data types with the new UTF-8 enabled collations (_UTF8). Questi tipi di dati sono inoltre in grado di rappresentare l'intera gamma di caratteri Unicode.These data types are also capable of representing the full Unicode character range.

Nota

A partire da SQL Server 2014 (12.x)SQL Server 2014 (12.x), tutte le nuove regole di confronto _140 supportano automaticamente i caratteri supplementari.Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x), all new _140 collations automatically support supplementary characters.

Se si utilizzano caratteri supplementari:If you use supplementary characters:

  • I caratteri supplementari possono essere usati in operazioni di ordinamento e confronto solo con le versioni delle regole di confronto 90 o successive.Supplementary characters can be used in ordering and comparison operations in collation versions 90 or greater.

  • Tutte le regole di confronto versione 100 supportano l'ordinamento linguistico con caratteri supplementari.All version 100 collations support linguistic sorting with supplementary characters.

  • L'uso dei caratteri supplementari in metadati, ad esempio in nomi di oggetti di database, non è supportato.Supplementary characters aren't supported for use in metadata, such as in names of database objects.

  • I database che usano le regole di confronto con caratteri supplementari (_SC) non possono essere abilitati per la replica di SQL ServerSQL Server.Databases that use collations with supplementary characters (_SC) can't be enabled for SQL ServerSQL Server Replication. Questo perché alcune delle tabelle di sistema e delle stored procedure create per la replica usano il tipo di dati legacy ntext, che non supporta i caratteri supplementari.This is because some of the system tables and stored procedures that are created for replication use the legacy ntext data type, which doesn't support supplementary characters.

  • Il flag SC può essere applicato a:The SC flag can be applied to:

    • Regole di confronto versione 90Version 90 collations
    • Regole di confronto versione 100Version 100 collations
  • Il flag SC non può essere applicato a:The SC flag can't be applied to:

    • Regole di confronto di Windows senza versione, versione 80Version 80 non-versioned Windows collations
    • Regole di confronto binarie BIN o BIN2The BIN or BIN2 binary collations
    • Regole di confronto di SQL *The SQL* collations
    • Regole di confronto versione 140 (non devono necessariamente avere il flag SC perché supportano già i caratteri supplementari)Version 140 collations (these don't need the SC flag, because they already support supplementary characters)

Nella tabella seguente viene confrontato il comportamento di alcune funzioni per i valori stringa e di alcuni operatori di stringa quando vengono usati caratteri supplementari con e senza regole di confronto che supportano caratteri complementari:The following table compares the behavior of some string functions and string operators when they use supplementary characters with and without a supplementary character-aware (SCA) collation:

Funzione di stringa o operatoreString function or operator Con regole di confronto che supportano caratteri complementariWith an SCA collation Senza regole di confronto che supportano caratteri complementariWithout an SCA collation
CHARINDEXCHARINDEX

LENLEN

PATINDEXPATINDEX
La coppia di surrogati UTF-16 viene conteggiata come singolo punto di codice.The UTF-16 surrogate pair is counted as a single code point. La coppia di surrogati UTF-16 viene conteggiata come due punti di codice.The UTF-16 surrogate pair is counted as two code points.
LEFTLEFT

REPLACEREPLACE

REVERSEREVERSE

RIGHTRIGHT

SUBSTRINGSUBSTRING

STUFFSTUFF
Queste funzioni considerano ogni coppia di surrogati un singolo punto di codice e funzionano come previsto.These functions treat each surrogate pair as a single code point and work as expected. Queste funzioni potrebbero dividere qualsiasi coppia di surrogati e provocare risultati imprevisti.These functions might split any surrogate pairs and lead to unexpected results.
NCHARNCHAR Restituisce il carattere corrispondente al valore del punto di codice Unicode specificato nell'intervallo 0-0x10FFFF.Returns the character that corresponds to the specified Unicode code point value in the range 0–0x10FFFF. Se il valore specificato è incluso nell'intervallo 0-0xFFFF, viene restituito un carattere.If the specified value lies in the range 0–0xFFFF, one character is returned. Per valori superiori, viene restituito il surrogato corrispondente.For higher values, the corresponding surrogate is returned. Un valore maggiore di 0xFFFF restituisce NULL anziché il surrogato corrispondente.A value higher than 0xFFFF returns NULL instead of the corresponding surrogate.
UNICODEUNICODE Restituisce un punto di codice UTF-16 nell'intervallo 0-0x10FFFF.Returns a UTF-16 code point in the range 0–0x10FFFF. Restituisce un punto di codice UCS-2 nell'intervallo 0-0xFFFF.Returns a UCS-2 code point in the range 0–0xFFFF.
Carattere jolly per corrispondenze di singoli caratteriMatch One Character Wildcard

Carattere jolly per la mancata corrispondenza dei caratteriWildcard - Character(s) Not to Match
Sono supportati caratteri supplementari per tutte le operazioni con caratteri jolly.Supplementary characters are supported for all wildcard operations. Non sono supportati caratteri supplementari per queste operazioni con caratteri jolly.Supplementary characters aren't supported for these wildcard operations. Sono supportati altri operatori jolly.Other wildcard operators are supported.

Supporto GB18030GB18030 support

GB18030 è uno standard separato usato nella Repubblica popolare cinese per la codifica dei caratteri cinesi.GB18030 is a separate standard that's used in the People's Republic of China for encoding Chinese characters. In GB18030, i caratteri possono essere di 1, 2 o 4 byte di lunghezza.In GB18030, characters can be 1, 2, or 4 bytes in length. SQL ServerSQL Server offre supporto per i caratteri con codifica GB18030 consentendone il riconoscimento al momento dell'ingresso nel server da un'applicazione client e la conversione e archiviazione come caratteri Unicode a livello nativo.provides support for GB18030-encoded characters by recognizing them when they enter the server from a client-side application and converting and storing them natively as Unicode characters. Dopo essere stati archiviati nel server, questi caratteri vengono trattati come caratteri Unicode in tutte le operazioni successive.After they're stored in the server, they're treated as Unicode characters in any subsequent operations.

È possibile usare una qualsiasi regola di confronto cinese, preferibilmente la versione 100 più recente.You can use any Chinese collation, preferably the latest 100 version. Tutte le regole di confronto di livello _100 supportano l'ordinamento linguistico con caratteri GB18030.All _100 level collations support linguistic sorting with GB18030 characters. Se nei dati sono inclusi caratteri supplementari (coppie di surrogati), è possibile usare le regole di confronto SC disponibili in SQL Server 2017SQL Server 2017 per migliorare la ricerca e l'ordinamento.If the data includes supplementary characters (surrogate pairs), you can use the SC collations that are available in SQL Server 2017SQL Server 2017 to improve searching and sorting.

Nota

Assicurarsi che gli strumenti client, come SQL Server Management StudioSQL Server Management Studio, usino il tipo di carattere Dengxian per visualizzare correttamente le stringhe contenenti caratteri con codifica GB18030.Ensure that your client tools, such as SQL Server Management StudioSQL Server Management Studio, use the Dengxian font to correctly display strings that contain GB18030-encoded characters.

Supporto di lingue con alfabeti non latiniComplex script support

InSQL ServerSQL Server può essere supportata l'immissione, l'archiviazione, la modifica e la visualizzazione di lingue con alfabeti non latini.SQL ServerSQL Server can support inputting, storing, changing, and displaying complex scripts. Le lingue con alfabeti non latini includono i siti seguenti:Complex scripts include the following types:

  • Lingue che presentano una combinazione di testo scritto sia da destra verso sinistra sia da sinistra verso destra, ad esempio una combinazione di testo in arabo e inglese.Scripts that include the combination of both right-to-left and left-to-right text, such as a combination of Arabic and English text.
  • Lingue i cui caratteri assumono una forma diversa a seconda della posizione oppure combinati con altri caratteri, ad esempio arabi, indiani e thai.Scripts whose characters change shape depending on their position, or when combined with other characters, such as Arabic, Indic, and Thai characters.
  • Lingue, come il thai, che richiedono dizionari interni per il riconoscimento delle parole in quanto non vi sono interruzioni tra loro.Languages, such as Thai, that require internal dictionaries to recognize words because there are no breaks between them.

Le applicazioni di database che interagiscono con SQL ServerSQL Server devono usare controlli che supportano le lingue con alfabeti non latini.Database applications that interact with SQL ServerSQL Server must use controls that support complex scripts. I form standard di Windows creati in codice gestito sono abilitati per le lingue con alfabeti non latini.Standard Windows form controls that are created in managed code are complex-script-enabled.

Regole di confronto per il giapponese aggiunte in SQL Server 2017 (14.x)SQL Server 2017 (14.x)Japanese collations added in SQL Server 2017 (14.x)SQL Server 2017 (14.x)

A partire da SQL Server 2017 (14.x)SQL Server 2017 (14.x), sono supportate nuove famiglie di regole di confronto per il giapponese, con permutazioni di varie opzioni (_CS, _AS, _KS, _WS e _VSS).Starting with SQL Server 2017 (14.x)SQL Server 2017 (14.x), new Japanese collation families are supported, with the permutations of various options (_CS, _AS, _KS, _WS, and _VSS).

Per elencare queste regole di confronto, è possibile eseguire una query nel Motore di database di SQL ServerSQL Server Database Engine:To list these collations, you can query the Motore di database di SQL ServerSQL Server Database Engine:

SELECT Name, Description FROM fn_helpcollations()  
WHERE Name LIKE 'Japanese_Bushu_Kakusu_140%' OR Name LIKE 'Japanese_XJIS_140%'

Tutte le nuove regole di confronto supportano in modo predefinito i caratteri supplementari. Per nessuna nuova regola di confronto _140 esiste o è necessario il flag SC.All the new collations have built-in support for supplementary characters, so none of the new _140 collations has (or needs) the SC flag.

Queste regole di confronto sono supportate negli indici del Motore di databaseDatabase Engine, nelle tabelle ottimizzate per la memoria, negli indici columnstore e nei moduli compilati in modo nativo.These collations are supported in Motore di databaseDatabase Engine indexes, memory-optimized tables, columnstore indexes, and natively compiled modules.

Supporto di UTF-8UTF-8 support

In SQL Server 2019 (15.x)SQL Server 2019 (15.x) viene introdotto il supporto completo per la codifica dei caratteri di grande diffusione UTF-8 come codifica di importazione o esportazione e come regola di confronto di livello database o colonna per i dati di tipo stringa.SQL Server 2019 (15.x)SQL Server 2019 (15.x) introduces full support for the widely used UTF-8 character encoding as an import or export encoding, and as database-level or column-level collation for string data. La codifica UTF-8 è consentita nei tipi di dati char e varchar ed è abilitata quando si crea o si modifica la regola di confronto di un oggetto convertendola in una regola di confronto che ha il suffisso UTF8.UTF-8 is allowed in the char and varchar data types, and it's enabled when you create or change an object's collation to a collation that has a UTF8 suffix. Un esempio è la modifica di LATIN1_GENERAL_100_CI_AS_SC in LATIN1_GENERAL_100_CI_AS_SC_UTF8.One example is changing LATIN1_GENERAL_100_CI_AS_SC to LATIN1_GENERAL_100_CI_AS_SC_UTF8.

UTF-8 è disponibile solo per le regole di confronto di Windows che supportano i caratteri supplementari. Questa funzionalità è stata introdotta in SQL Server 2012 (11.x)SQL Server 2012 (11.x).UTF-8 is available only to Windows collations that support supplementary characters, as introduced in SQL Server 2012 (11.x)SQL Server 2012 (11.x). I tipi di dati nchar e nvarchar consentono solo la codifica UCS-2 o UTF-16 e rimangono invariati.The nchar and nvarchar data types allow UCS-2 or UTF-16 encoding only, and they remain unchanged.

Differenze nell'archiviazione tra UTF-8 e UTF-16Storage differences between UTF-8 and UTF-16

L'Unicode Consortium assegna a ogni carattere un punto di codice univoco, che corrisponde a un valore nell'intervallo 000000-10FFFF.The Unicode Consortium allocates to each character a unique code point, which is a value in the range 000000–10FFFF. Con SQL Server 2019 (15.x)SQL Server 2019 (15.x), sono disponibili entrambe le codifiche UTF-8 e UTF-16 per rappresentare l'intera gamma:With SQL Server 2019 (15.x)SQL Server 2019 (15.x), both UTF-8 and UTF-16 encodings are available to represent the full range:

  • Con la codifica UTF-8, i caratteri nell'intervallo ASCII (000000-00007F) richiedono 1 byte, i punti di codice nell'intervallo 000080-0007FF richiedono 2 byte, i punti di codice nell'intervallo 000800-00FFFF richiedono 3 byte e i punti di codice nell'intervallo 0010000-0010FFFF richiedono 4 byte.With UTF-8 encoding, characters in the ASCII range (000000–00007F) require 1 byte, code points 000080–0007FF require 2 bytes, code points 000800–00FFFF require 3 bytes, and code points 0010000–0010FFFF require 4 bytes.
  • Con la codifica UTF-16, i punti di codice nell'intervallo 000000-00FFFF richiedono 2 byte e i punti di codice nell'intervallo 0010000-0010FFFF richiedono 4 byte.With UTF-16 encoding, code points 000000–00FFFF require 2 bytes, and code points 0010000–0010FFFF require 4 bytes.

Nella tabella seguente sono elencati i byte per l'archiviazione della codifica per ogni intervallo di caratteri e tipo di codifica:The following table lists the encoding storage bytes for each character range and encoding type:

Intervallo di codici (esadecimale)Code range (hexadecimal) Intervallo di codici (decimale)Code range (decimal) Byte per l'archiviazione 1 con UTF-8Storage bytes1 with UTF-8 Byte per l'archiviazione 1 con UTF-16Storage bytes1 with UTF-16
000000–00007F000000–00007F 0–1270–127 11 22
000080–00009F000080–00009F
0000A0–0003FF0000A0–0003FF
000400–0007FF000400–0007FF
128–159128–159
160–1.023160–1,023
1.024–2.0471,024–2,047
22 22
000800–003FFF000800–003FFF
004000–00FFFF004000–00FFFF
2.048–16.3832,048–16,383
16.384–65.53516,384–65,535
33 22
010000–03FFFF2010000–03FFFF2

040000–10FFFF2040000–10FFFF2
65,536–262,143265,536–262,1432

262.144–1.114.1112262,144–1,114,1112
44 44

1 I byte per l'archiviazione si riferiscono alla lunghezza in byte con codifica, non alle dimensioni di archiviazione su disco del tipo di dati.1 Storage bytes refers to the encoded byte length, not the data-type on-disk storage size. Per altre informazioni sulle dimensioni di archiviazione su disco, vedere nchar e nvarchar e char e varchar.For more information about on-disk storage sizes, see nchar and nvarchar and char and varchar.

2 Intervallo di punti di codice per caratteri supplementari.2 The code point range for supplementary characters.

Suggerimento

Si pensa comunemente che in CHAR(n) e VARCHAR(n) o in NCHAR(n) e NVARCHAR(n) l'elemento n definisca il numero di caratteri.It's common to think, in CHAR(n) and VARCHAR(n) or in NCHAR(n) and NVARCHAR(n), that n defines the number of characters. Questo è dovuto al fatto che nell'esempio di una colonna CHAR(10) è possibile archiviare 10 caratteri ASCII nell'intervallo 0-127 usando regole di confronto come Latin1_General_100_CI_AI, perché ogni carattere in questo intervallo usa solo 1 byte.This is because, in the example of a CHAR(10) column, 10 ASCII characters in the range 0–127 can be stored by using a collation such as Latin1_General_100_CI_AI, because each character in this range uses only 1 byte.

Tuttavia, in CHAR(n) e VARCHAR(n) l'elemento n definisce le dimensioni della stringa in byte (0-8.000), mentre in NCHAR(n) e NVARCHAR(n) l'elemento n definisce le dimensioni della stringa in coppie di byte (0-4.000).However, in CHAR(n) and VARCHAR(n), n defines the string size in bytes (0–8,000), and in NCHAR(n) and NVARCHAR(n), n defines the string size in byte-pairs (0–4,000). n non definisce mai il numero di caratteri che è possibile archiviare,n never defines numbers of characters that can be stored.

Come visto in precedenza, a seconda del set di caratteri in uso, la scelta della codifica Unicode e del tipo di dati appropriati potrebbe offrire importanti risparmi di risorse di archiviazione o al contrario incrementare il footprint della memoria.As you've just seen, choosing the appropriate Unicode encoding and data type might give you significant storage savings or increase your current storage footprint, depending on the character set in use. Ad esempio se si usa una regola di confronto in caratteri latini con supporto UTF-8, come Latin1_General_100_CI_AI_SC_UTF8, una colonna CHAR(10) archivia 10 byte e può contenere 10 caratteri ASCII nell'intervallo 0-127.For example, when you use a Latin collation that's UTF-8 enabled, such as Latin1_General_100_CI_AI_SC_UTF8, a CHAR(10) column stores 10 bytes and can hold 10 ASCII characters in the range 0–127. Ma può contenere solo 5 caratteri nell'intervallo 128-2047 e solo 3 caratteri nell'intervallo 2048-65535.But it can hold only 5 characters in the range 128–2047 and only 3 characters in the range 2048–65535. Tuttavia, dato che una colonna NCHAR(10) archivia 10 coppie di byte (20 byte), può ospitare 10 caratteri nell'intervallo 0-65535.By comparison, because a NCHAR(10) column stores 10 byte-pairs (20 bytes), it can hold 10 characters in the range 0–65535.

Prima di scegliere se usare la codifica UTF-8 o UTF-16 per un database o una colonna, considerare la distribuzione dei dati di tipo stringa che verranno archiviati:Before you choose whether to use UTF-8 or UTF-16 encoding for a database or column, consider the distribution of string data that will be stored:

  • Se sono principalmente nell'intervallo ASCII 0-127 (ad esempio, per la lingua inglese), ogni carattere richiede 1 byte con UTF-8 e 2 byte con UTF-16.If it's mostly in the ASCII range 0–127 (such as English), each character requires 1 byte with UTF-8 and 2 bytes with UTF-16. L'uso di UTF-8 offre vantaggi in termini di archiviazione.Using UTF-8 provides storage benefits. Se si cambia il tipo di dati di una colonna esistente con caratteri ASCII nell'intervallo 0-127 da NCHAR(10) a CHAR(10) usando una regola di confronto con supporto UTF-8, i requisiti di archiviazione vengono ridotti del 50%.Changing an existing column data type with ASCII characters in the range 0–127 from NCHAR(10) to CHAR(10), and using an UTF-8 enabled collation, translates into a 50 percent reduction in storage requirements. Questa riduzione deriva dal fatto che NCHAR(10) richiede 20 byte per l'archiviazione, in confronto a CHAR(10) che richiede solo 10 byte per la rappresentazione della stessa stringa Unicode.This reduction is because NCHAR(10) requires 20 bytes for storage, compared with CHAR(10), which requires 10 bytes for the same Unicode string representation.
  • Oltre l'intervallo ASCII, quasi tutti gli script basati sull'alfabeto latino, greco, cirillico, copto, armeno, ebraico, arabo, siriaco, tāna e n'ko richiedono 2 byte per carattere sia in UTF-8 che in UTF-16.Above the ASCII range, almost all Latin-based script, and Greek, Cyrillic, Coptic, Armenian, Hebrew, Arabic, Syriac, Tāna, and N’Ko, require 2 bytes per character in both UTF-8 and UTF-16. In questi casi non vi sono differenze significative a livello di archiviazione per i tipi di dati simili (ad esempio, tra l'uso di char o nchar).In these cases, there aren't significant storage differences for comparable data types (for example, between using char or nchar).
  • Se si tratta principalmente di alfabeti dell'Asia orientale (ad esempio, coreano, cinese e giapponese), ogni carattere richiede 3 byte con UTF-8 e 2 byte con UTF-16.If it's mostly East Asian script (such as Korean, Chinese, and Japanese), each character requires 3 bytes with UTF-8 and 2 bytes with UTF-16. L'uso di UTF-16 offre vantaggi in termini di archiviazione.Using UTF-16 provides storage benefits.
  • I caratteri nell'intervallo 010000-10FFFF richiedono 4 byte sia in UTF-8 che in UTF-16.Characters in the range 010000–10FFFF require 4 bytes in both UTF-8 and UTF-16. In questi casi non vi sono differenze di archiviazione per i tipi di dati simili (ad esempio, tra l'uso di char o nchar).In these cases, there aren't storage differences for comparable data types (for example, between using char or nchar).

Per altre considerazioni, vedere Scrittura di istruzioni Transact-SQL internazionali.For other considerations, see Write International Transact-SQL Statements.

AttivitàTask ArgomentoTopic
Viene descritto come impostare o modificare le regole di confronto dell'istanza di SQL ServerDescribes how to set or change the collation of the instance of SQL Server Impostazione o modifica di regole di confronto del serverSet or Change the Server Collation
Viene descritto come impostare o modificare le regole di confronto di un database utenteDescribes how to set or change the collation of a user database Impostare o modificare le regole di confronto del databaseSet or Change the Database Collation
Viene descritto come impostare o modificare le regole di confronto di una colonna nel databaseDescribes how to set or change the collation of a column in the database Impostare o modificare le regole di confronto delle colonneSet or Change the Column Collation
Viene descritto come restituire informazioni sulle regole di confronto a livello di server, di database o di colonnaDescribes how to return collation information at the server, database, or column level Visualizzazione di informazioni sulle regole di confrontoView Collation Information
Viene descritto come scrivere istruzioni Transact-SQL più portabili da un linguaggio a un altro o in grado di supportare più linguaggi con maggiore facilitàDescribes how to write Transact-SQL statements that are more portable from one language to another, or support multiple languages more easily Scrittura di istruzioni Transact-SQL internazionaliWrite International Transact-SQL Statements
Viene descritto come modificare la lingua dei messaggi di errore e le preferenze di uso e visualizzazione dei dati di tipo data, ora e valutaDescribes how to change the language of error messages and preferences for how date, time, and currency data is used and displayed Impostazione di una lingua di sessioneSet a Session Language

Per altre informazioni, vedere i seguenti contenuti correlati:For more information, see the following related content:

Vedere ancheSee also

Regole di confronto dei database indipendenti Contained Database Collations
Scelta di una lingua durante la creazione di un indice full-text Choose a Language When Creating a Full-Text Index
sys.fn_helpcollations (Transact-SQL)sys.fn_helpcollations (Transact-SQL)