SQL Server – Collation
La collation viene ereditata dall’istanza di SQL Server installata.
La collation impostata identifica un SET di regole usate per ORDINARE e PARAGONARE (compare e join) i dati.
La collation può essere impostata su più livelli (se non definito espressamente il livello inferiore eredita da quello superiore):
– Server Collation (istanza sql server) = SQL_Latin1_General_CP1_CI_AS
– Database Collation = SQL_Latin1_General_CP1_CI_AS
– Table Collation = SQL_Latin1_General_CP1_CI_AS
– Column collation = SQL_Latin1_General_CP1_CI_AS
Esempio di creazione di un database con una specifica collation:
create database MYDBNAME collate SQL_Latin1_General_CP1_CI_AS go
Regole:
SQL_SortRules[_Pref]_CPCodepage_<ComparisonStyle:_CaseSensitivity_AccentSensitivity | _BIN>
SortRules
identifica l’alfabeto o la lingua di cui vengono applicate le regole di ordinamento, dipende dall’ambiente (versione Windows, locale, ANSI).
Esempio: “_Latin1_General”
Pref[opzionale]
Specifica come preferenza l’uso del maiuscolo.
Codepage
CP+Numero (1-4 cifre), identifica la tabella codici utilizzata dalle regole di confronto.
Esempio: CP1 specifica set di caratteri Inglese Americano=“U.S. English” (code page 1252). Per tutte le altre tabelle codici viene specificato il numero completo (esempio CP1251)
ComparisonStyle:
(a) Case-sensitive, Accent-sensitive, Kana-sensitive, Width-sensitive: risolve i seguenti quesiti
-Case Sensitive/Insensitive (‘A’ = ‘a’?)
-Accent Sensitive/ Insensitive (‘a’=’à’?)
-Width-sensitive (single-byte, double-byte ?)
-Kana -sensitive( distinzione tra 2 tipi di Japanese kana characters: Hiragana and Katakana)
Esempio: _CI = Case Insensitive; _AS = Accent Insensitive
(b) Binary: risolve tutto a livello binario basandosi sul locale e ANSI code page del sistema (rappresenta anche la modalità più veloce come performance) quindi esclude le impostazioni Case-sensitive, Accent-sensitive, Kana-sensitive, Width-sensitive (ovvero imposta Binary sort = case sensitive; accent sensitive)
Esempio: _BIN
——————————————————————————————-
Per maggiori dettagli vedi:
-technet.microsoft.com/en-us/library/ms143524%28SQL.90%29.aspx
-http://msdn.microsoft.com/it-it/library/ms180175.aspx
——————————————————————————————-
Verifica della Collation del DataBase utilizzato.
Da comando SQL:
Collation dell’istanza (server corrente)
select SERVERPROPERTY ('collation') go
(vedi anche comndo: sp_helpsort)
Collation del DataBase corrente
select convert(sysname,DatabasePropertyEx(db_name(),'Collation')) go
Da Management Studio
MyDataBase > Click dx > Properties > voce “Collation”
Verifica della Collation del DataBase utilizzato.
La collation viene ereditata dall’istanza di SQL Server installata.
La collation impostata identifica un SET di regole usate per ORDINARE e PARAGONARE (compare e join) i dati.
La collation può essere impostata su più livelli (se non definito espressamente il livello inferiore eredita da quello superiore):
– Server Collation (istanza sql server) = SQL_Latin1_General_CP1_CI_AS
– Database Collation = SQL_Latin1_General_CP1_CI_AS
– Table Collation = SQL_Latin1_General_CP1_CI_AS
– Column collation = SQL_Latin1_General_CP1_CI_AS
Esempio di creazione di un database con una specifica collation:
create database MYDBNAME collate SQL_Latin1_General_CP1_CI_AS
go
Regole:
(a) Windows system locale: dipende dall’ambiente (versione Windows, locale, ANSI).
Esempio: “_Latin1_General” per il set di caratteri “U.S. English” (code page 1252)
(b) Case-sensitive, Accent-sensitive, Kana-sensitive, Width-sensitive, risolve i seguenti quesiti
-Case Sensitive/Insensitive (‘A’ = ‘a’?)
-Accent Sensitive/ Insensitive (‘a’=’à’?)
-Width-sensitive (single-byte, double-byte ?)
Esempio: _CI = Case Insensitive; _AS = Accent Insensitive
(c) Binary: risolve tutto a livello binario basandosi sul locale e ANSI code page del sistema (rappresenta anche la modalità più veloce come performance) quindi esclude le impostazioni Case-sensitive, Accent-sensitive, Kana-sensitive, Width-sensitive (ovvero imposta Binary sort = case sensitive; accent sensitive)
Esempio: _BIN
(Per maggiori dettagli vedi http://technet.microsoft.com/en-us/library/ms143524%28SQL.90%29.aspx)
Da comando SQL:
Collation dell’istanza (server corrente)
select SERVERPROPERTY (‘collation’)
go
(vedi anche: sp_helpsort)
Collation del DataBase corrente
select convert(sysname,DatabasePropertyEx(db_name(),’Collation’))
go
Da Management Studio
MyDataBase > Click dx > Properties > voce “Collation“