La Collation in SQL Server è una componente cruciale che definisce il comportamento delle operazioni di confronto, ricerca e di ordinamento dei dati di tipo alfanumerico all’interno dell’ambiente di lavoro.
La stessa istruzione viene usata per i confronti e gli ordinamenti all’interno delle tabelle.
Usando il comando ALTER TABLE o ALTER DATABASE è possibile modificare la Collation in uso a livello di colonna.
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.
CONSIDERAZIONI GENERALI:
Scegliere la collation in base al contesto.
Valutare le esigenze linguistiche e culturali dell’applicazione, ricordando che è necessario che i dati siano letti correttamente e che la trasmissione degli stessi ad eventuali altri componenti sia efficace. La Collation può influenzare anche le performance (vedi: Supporto Unicode e delle regole di confronto - SQL Server | Microsoft Learn).
Evitare comportamenti ambigui.
Assicurarsi che a livello di query la collation sia omogenea, ad esempio evitando di usarne una case-insensitive ed un altra case-sensitive mentre si confrontano i dati.
Impostare Collation a livello di database o colonna solo se necessario.
Questo garantisce omogeneità nei dati e limita possibili fraintendimenti. È buona norma inoltre utilizzare tipologie di dati che supportano lo standard Unicode (es. Nvarchar)
Attuare rigide politiche di importazione dei dati da fonti esterne per limitare incoerenze.
PROBLEMATICHE COMUNI:
Confronti errati ed ordinamenti incoerenti.
Discrepanze nei livelli di Collation possono portare ad errori nei confronti e negli ordinamenti generando comportamenti inaspettati o imprevisti nelle query, limitando l’utilizzabilità stessa dell’applicazione.
Join inefficaci.
Confrontare dati codificati in maniera diversa rende le join praticamente inutilizzabili. Utilizzare una conversione esplicita se due colonne hanno diversa Collation.
Visualizzazione errata dei dati.
Gli stessi dati letti in due modi diversi possono generare problemi nella visualizzazione da parte dell’utente finale.
Violazione dei vincoli di integrità.
Codifiche errate possono portare a violazione della convalida degli stessi causando errori.
Conclusioni
In conclusione, la Collation è un aspetto da tenere ben presente quando si utilizza SQL Server e che può assumere enorme rilevanza a seconda del contesto. Eventuali discrepanze nei dati possono essere molto difficili da individuare e possono inficiare di molto le performance generali.
di Niccolò Albizzati, pubblicato il 18 aprile 2024