La Collation consiste in un insieme di regole e impostazioni che determinano come i caratteri vengono interpretati durante pressoché ogni fase di elaborazione e manipolazione degli stessi.
Esistono decine di Collation diverse che definiscono altrettanti comportamenti riguardo in particolare lettere maiuscole e minuscole, accentate e non, e generalmente la corretta interpretazione dei caratteri.
Durante l’installazione di SQL Server va scelta la Collation che definirà a livello di istanza le regole.
SQL Server ne propone una diversa a seconda della lingua del sistema operativo:
Fig. 2 Impostazione della Collation durante l’installazione di SQL Server
L’esempio mostra l’impostazione predefinita per la lingua inglese.
La prima parte del nome definisce il set di caratteri di codifica (in questo caso ‘Latin1’ cioè quelli occidentali) mentre la seconda il comportamento in caso di lettere maiuscole (‘CI’ = case insensitive ovvero nessuna differenza logica fra lettere maiuscole e minuscole) e in caso di lettere accentate (‘AS’ = accent sensitive, ovvero differenza logica fra lettere accentate e non).
Una volta definita essa sarà la Collation di default di tutti gli oggetti creati all’interno dell’istanza.
La lista completa dei vari nomi e del significato delle sigle è disponibile qui:
Windows_collation_name (Transact-SQL) - SQL Server | Microsoft Learn
NOTA BENE: cambiare la Collation a installazione eseguita è un procedimento dispendioso e altamente sconsigliabile, vedi:
Impostazione o modifica di regole di confronto del server - SQL Server | Microsoft Learn
Una volta definita la Collation a livello di istanza, è possibile cambiarla per ogni database e anche per ogni colonna all’interno delle singole tabelle usando l’istruzione COLLATE.
Fig. 3 Definizione di diverse collation per database e tabella in fase di creazione
La stessa istruzione viene usata per i confronti e gli ordinamenti all’interno delle tabelle.
Fig. 4 COLLATE durante ordinamento
Usando il comando ALTER TABLE o ALTER DATABASE è possibile modificare la Collation in uso a livello di colonna.
Fig. 5 COLLATE e ALTER DATABASE
Ricapitolando, i livelli possibili di Collation sono quindi tre:
- Istanza
- Database
- Colonna
Ed è sempre possibile un confronto corretto fra i dati utilizzando il comando COLLATE.
Fonte notizia
www.datamaze.it blogs post collation-sql