Condividi tramite


Caratteri supplementari

I tipi di dati nchar e nvarchar memorizzano ogni carattere come valore a 16 bit in una codifica denominata UCS-2. La codifica, definita dalle versioni di Unicode antecedenti al 1996, supporta i caratteri nell'intervallo da U+0000 a U+FFFF. Le versioni più recenti di Unicode hanno definito ulteriori caratteri nell'intervallo da U+10000 a U+10FFFF definiti caratteri supplementari. Questi caratteri vengono memorizzati come coppie di valori a 16 bit, definite coppie di surrogati, in una codifica chiamata UTF-16. Tutte le nuove regole di confronto di livello 100 supportano il supporto linguistico con caratteri supplementari. 

Se si utilizzano caratteri supplementari, considerare i limiti seguenti:

  • I caratteri supplementari possono essere utilizzati solo in operazioni di ordinamento e confronto solo con le versioni 90 o successive delle regole di confronto.

  • Poiché i caratteri supplementari sono archiviati come due valori a 16 bit, la funzione LEN() restituisce il valore 2 per ogni carattere supplementare contenuto nella stringa di argomento. Allo stesso modo, le funzioni CHARINDEX e PATINDEX non rappresentano in modo corretto l'occorrenza di caratteri supplementari all'interno di stringhe di caratteri.

  • Le funzioni LEFT, RIGHT, SUBSTRING, STUFF e REVERSE possono dividere qualsiasi coppia di surrogati, provocando risultati imprevisti.

  • L'utilizzo dei caratteri supplementari con i caratteri jolly di sottolineatura (_), percentuale (%) e accento circonflesso (^) non è supportato.

  • L'utilizzo dei caratteri supplementari in metadati, ad esempio in nomi di oggetti di database, non è supportato.

Per uno script Transact-SQL correlato a questo scenario, vedere l'esempio di modifica di stringhe in grado di riconoscere caratteri supplementari. Per informazioni sugli esempi, vedere Considerazioni per l'installazione di esempi e di database di esempio di SQL Server.