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.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Tempo di commiati, il 4 giugno 2007 alle 15:04
- White paper su vardecimal storage format, il 30 maggio 2007 alle 10:49
- Tools per SQL Server, il 24 maggio 2007 alle 08:34
- Serie di articoli su SSIS, il 17 maggio 2007 alle 08:32
- Non c'è pace per il SP2, il 4 maggio 2007 alle 09:39
- Recuperare informazioni sugli indici, il 29 aprile 2007 alle 19:04