Scegliere le regole di confronto SQL Server giuste per l'archiviazione
-
22-07-2019 - |
Domanda
In che modo le regole di confronto influiscono su SQL Server in termini di archiviazione e in che modo influiscono sui tipi di dati Unicode e non Unicode?
-
Le regole di confronto influiscono sull'archiviazione Unicode? o semplicemente governare le regole di ordinamento all'interno del database?
-
Quando utilizzo i tipi di dati non Unicode quali restrizioni sono legate alla raccolta?
-
Se si applicano restrizioni, cosa succede quando provo a memorizzare un personaggio non presente nelle regole di confronto del database di un tipo di dati non unicode?
La mia comprensione è che il tipo di dati Unicode può sempre archiviare l'intero set di dati Unicode mentre le capacità di archiviazione dei tipi di dati non unicode dipendono dalla tabella codici (che è definita dalle regole di confronto) e possono rappresentare solo un numero di comuni personaggi in quella raccolta.
Ovviamente ogni carattere in un tipo di dati Unicode occuperebbe almeno 2 byte mentre i tipi di dati non unicode occupano 1 byte per carattere (o varia anche con le regole di confronto?)
Mettimi qui, come funziona esattamente?
Soluzione
SQL Server archivia i dati Unicode (NTEXT, NVARCHAR) in UCS2, risultando sempre in 2 byte per carattere.
Un confronto ha effetto solo sull'ordinamento (e sull'involucro).
Nei tipi di dati non Unicode (TEXT, VARCHAR), viene utilizzato solo un singolo byte per carattere e solo i caratteri della tabella codici delle regole di confronto possono essere memorizzati (proprio come indicato). Vedi questo articolo MSDN sulle regole di confronto