El Collation juego de caracteres o letras asociadas a una base de datos SQL server ANSI como Microsoft SQL Server , Oracle o MySQL.
El collation permite asociar un valor único a cada letra dependiendo del idioma seleccionado, en collation europeo una posición puede estar asociada a la ñ mientras que en collation asiatico estar asociado a caracteres chinos lo cual permite que los europeos veamos la ñ mientras los asiaticos sus caracteres sin gastar demasiado espacio.
Sólo se aplican cuando guardamos datos en formato no unicode es decir en el caso de MSSQL server cuando guardamos los datos como varchar en vez de nvarchar.
La desventaja de guardar campos en formato unicode es que ocuparán mucho más espacio e indirectamente consumirán más recursos pero serán 100% compatibles
Por defecto si no especificamos Collation al crear una nueva base de datos se selecciona el predeterminado por la base de datos y éste a su vez está predeterminado por el idioma que tengamos seleccionado en el sistema operativo donde instalamos el servidor de bases de datos.
Si queremos crear una base de datos desde Transact SQL especificando el collation la sintaxis sería algo similar a esto:
CREATE DATABASE [Clientes-ES] ON (NAME = N'DB_Spanish_Data', FILENAME = N'C:\MSSQL\data\Clientes-ES.MDF', SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'DB_Spanish_Log', FILENAME = N'C:\MSSQL\data\Clientes-ES.LDF', SIZE = 1, FILEGROWTH = 10%) COLLATE Modern_Spanish_CI_AI GO
|
Si creo la base de datos desde un asistente simplemente me aparecerá un desplegable con los posibles collations y la posibilidad de usar el predeterminado de la base de datos.
¿Y ahora qué?
El collation no sólo indica a que valor interno de una página de códigos se asigna cada letra, también indica si el motor de SQL distingue mayusculas y minusculas o si trata las vocales acentuadas igual que las no acentuadas de forma que "cáspita" sea lo mismo que "caspita" en cuanto a busquedas y ordenación se refiere, también podemos cambiar el collation sólo para una consulta concreta pero eso es tema para otro articulo.
¿Dudas?
No os canseis de preguntar en los foros de Devjoker
Pablo Gumpert.
www.aldeamedia.com