Cuando creamos una columna en una tabla y queremos que sea de tipo carater, SQL server nos ofrece varios tipos entre los que elegir, char, nchar, varchar y nvarchar. Veamos sus diferencias:
Char y NChar
Cuando se
configura un campo de tipo Char o NChar indicamos campos de tamaño fijo.
Es Decir, si configuramos una tabla de la siguiente forma
Campo1 Char(10),
Campo2 NChar(10)
La diferencia entre Char y NChar es el
soporte a carácteres Unicode o caracteres especiales (los carácteres Unicode ocupan más de 1
byte). Si vamos a usar caracteres propios de nuestro idioma hay que usar NChar (acentos, la ñ, etc..). La diferencia fundamentar será la cantidad de espacio ocupda, mientras que el
Campo1 siempre ocupará 10 bytes el Campo2 será de 20 Bytes.
Varchar y Nvarchar
Los campos de
tipo Varchar o NVarchar permiten almacenamiento variable. Es una cadena de caracteres de texto que puede ser tan grande como el tamaño de
página para la tabla de la base de datos. Para ello usamos VarChar(MAX) (Ojo pues el tamaño de una página de tabla es 8.196 bytes, y no hay una fila de una tabla puede ser tener de 8.060 caracteres. Esto a su vez limita el tamaño máximo de un VARCHAR a 8000 caracateres)
La "N" en NVARCHAR significa uNicode y funciona como en el apartado anterior.
CampoVariable1 Varchar(10),
La diferencia fundamental entre char y varchar es que el tipo de datos char es que si en una columna char NOT NULL se inserta un valor más corto que la longitud de la columna, el valor se rellena a la derecha con espacios en blanco hasta completar el tamaño de la columna, mientras que en varchar no se rellenan con blancos mejorando el almacenamiento en la BD.
Por ejemplo, si una columna se define como char(10) y el dato que se va a almacenar es "música", SQL Server almacena este dato como "música____" donde "_" indica un espacio en blanco.
Esto es lo general pero depende de ANSI_PADDING.
- Si ANSI_PADDING es ON al crear una columna char NULL, se comporta como una columna char NOT NULL: los valores se rellenan a la derecha hasta completar el tamaño de la columna.
- Si ANSI_PADDING es OFF cuando se crea la columna char NULL, se comporta igual que una columna varchar con ANSI_PADDING establecido en OFF: los espacios en blanco a la derecha se truncan
No hay comentarios:
Publicar un comentario