Collation in SQL Server

di Luca Bianchi, in SQL Server,

Ogni campo char/varchar ha tra le sue proprietà la COLLATION che determina non solo il set di caratteri in uso (dipendente dalla lingua) ma anche il comportamento nella ricerca e negli ordinamenti dei caratteri maiuscoli e minuscoli (ovvero se "A" deve essere uguale ad "a") ed alle lettere accentate (ad esempio se "è" deve essere uguale ad "é" e a "e"). Queste proprietà determinano se il set di caratteri è case sensitive e/o accent sensitive.

Per impostazione predefinita, se non viene specificato nulla in fase di creazione della tabella, il campo eredita le impostazioni a livello di database definite in fase di creazione dello stesso (o modificato successivamente con il comando ALTER DATABASE). Se in fase di creazione del database non viene fatta la scelta della collation, verrà ereditata quella valida per l'istanza che è stata definita in fase di setup.

Ciò premesso è possibile eseguire ordinamenti/ricerche case sensitive o case insensitive, accent sensitive o accent insensitive a prescindere da quale sia la collation del campo su cui si esegue l'operazione.
A questo scopo si utilizza la clausola COLLATE e, qualunque sia l'impostazione della colonna, l'istruzione che segue

SELECT *
FROM dbo.MyTable
WHERE Nome COLLATE LATIN1_GENERAL_CS_AI = 'Almodovar'

eseguirà un cast del campo Nome restituendo non solo i valori "Almodovar" ma anche le varianti "Almòdovar", "Almodòvar", ecc.

Si notino nel nome della collation i suffissi "CS" e "AI" che indicano rispettivamente una collation Case Sensitive e Accent Insensitive.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese