Architettura delle tabelle codici
Le regole di confronto controllano l'archiviazione fisica delle stringhe di caratteri in SQL Server. Le regole di confronto specificano gli schemi di bit che rappresentano ogni carattere e le regole in base alle quali i caratteri vengono ordinati e confrontati.
In un computer i caratteri sono rappresentati da schemi di bit diversi in cui i bit possono trovarsi nello stato ON o OFF. In un byte sono contenuti 8 bit che possono essere impostati su ON e su OFF in 256 schemi diversi. Un programma che utilizza 1 byte per archiviare ogni carattere può quindi rappresentare fino a 256 caratteri diversi assegnando un carattere a ogni schema di bit. In 2 byte sono contenuti 16 bit che possono essere impostati su ON e su OFF in 65.536 schemi univoci. Un programma che utilizza 2 byte per rappresentare ogni carattere può rappresentare fino a 65.536 caratteri.
Le tabelle codici a un byte sono definizioni dei caratteri che rappresentano ognuno dei 256 schemi di bit possibili in un byte. Le tabelle codici definiscono schemi di bit per caratteri minuscoli e maiuscoli, cifre, simboli e caratteri speciali, ad esempio punto esclamativo (!), simbolo di chiocciola (@), cancelletto (#) o percentuale (%). Ogni lingua europea, ad esempio il tedesco o lo spagnolo, dispone di una propria tabella codici a un byte. Sebbene gli schemi di bit utilizzati per rappresentare i caratteri dell'alfabeto latino dalla A alla Z siano gli stessi per tutte le tabelle codici, gli schemi di bit utilizzati per rappresentare i caratteri accentati variano da una tabella codici all'altra.
Tramite la codifica SBCS (Single-Byte Character Set) non è possibile archiviare tutti i caratteri utilizzati in molte lingue. Alcune lingue asiatiche utilizzano migliaia di caratteri e sono necessari quindi due byte per carattere. Per queste lingue è stata definita la codifica DBCS (Double-Byte Character Set) e di conseguenza, sono state definite le tabelle codici.
Nella tabella seguente sono incluse le tabelle codici supportate in SQL Server.
Tabella codici |
Descrizione |
---|---|
1258 |
Vietnamita |
1257 |
Baltico |
1256 |
Arabo |
1255 |
Ebraico |
1254 |
Turco |
1253 |
Greco |
1252 |
Latino 1 (ANSI) |
1251 |
Cirillico |
1250 |
Europa centrale |
950 |
Cinese (tradizionale) |
949 |
Coreano |
936 |
Cinese (semplificato) |
932 |
Giapponese |
874 |
Thai |
850 |
Multilingue (Latino 1 MS-DOS) |
437 |
Inglese (Stati Uniti) MS-DOS |
La stessa tabella codici per i dati di tipo non Unicode può essere utilizzata da più regole di confronto. La tabella codici 1251, ad esempio, definisce un set di caratteri in cirillico. Questa tabella codici è utilizzata da più regole di confronto, tra cui Cyrillic_General, Ukrainian e Macedonian_FYROM_90. Sebbene tutte queste regole di confronto utilizzino lo stesso set di bit per rappresentare i dati contenenti caratteri non Unicode, le regole di ordinamento e comparazione applicate sono leggermente diverse per consentire la gestione delle definizioni di dizionario della sequenza corretta di caratteri nella lingua o nell'alfabeto associato alle regole di confronto.