Home » Programacion » Base de Datos » Diferencias entre Char, Varchar, NChar y NVarchar en SQL Server

Diferencias entre Char, Varchar, NChar y NVarchar en SQL Server

julio 7th, 2010 Posted in Base de Datos, Programacion Tags: ,

Las diferencias a la hora de escoger campos Varchar, NVarchar, Char o NChar. Es importante la diferencia existente para configurar la base de datos
de la forma más óptima. Ya que dependiendo del tipo de campo “String” que configuremos, la capacidad o la información puede variar.

Char y NChar

Cuando se configura un campo de tipo Char o NChar estamos indicando 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 (los carácteres Unicode ocupan más de 1 byte). Por este motivo a la hora de almacenar algún valor, en el Campo1 siempre ocupará 10 bytes y en el Campo2 20 Bytes.

Varchar o NVarchar

Los campos de tipo Varchar o NVarchar son de almacenamiento variable. Es decir, si configuramos una tabla de la siguiente forma


CampoVariable1 Varchar(10),
CampoVariable2 NVarchar(10)

El tamaño almacenado dependerá del valor que se quiere guardar, el número de carácteres sólo configura el tamaño máximo que este campo puede almacenar. En el caso del CampoVariable1 el tamaño máximo será de 10 bytes, y en el caso del CampoVariable2 el tamaño máximo será de 20 bytes.

Unicode o No Unicode

Dependiendo de la información que queremos almacenar en nuestra base de datos, tendremos que definir si permitimos o no valores Unicode (Por ejemplo diferentes idiomas como el Ruso, Japonés, chino, …).

Existen tablas de codificación de caracteres (Encodings) que poseen carácteres específicos de Doble Byte. Esto puede afectarnos a la hora de utilizar campos de tipo Char o Varchar, ya que un texto de 10 carácteres podría superar los 10 bytes, haciendo imposible la insercción del valor a la base de datos.

Recomendación

Siempre que dudemos utilizar los campos Varchar y NVarchar, ya que al ser de almacenamiento de tipo variable, sólo ocupará lo que realmente necesitamos. Después habría que analizar si necesitamos almacenar carácteres Unicode o no, y que tabla de codificación vamos a utilizar. Si el Encoding es ASCII, no hace falta que sea Unicode el almacenamiento, pero en caso contrario, recomendaría NVarchar, por seguridad y evitar posibles futuros problemas.

Para más información consultar Char, Varchar y NChar, NVarchar

7 Comentarios en “Diferencias entre Char, Varchar, NChar y NVarchar en SQL Server”

  1. Excelente explicación dice:

    Está excelente la explicación, clara y concisa.

    Muchas gracias

  2. Gonzalo dice:

    gracias, asi de claro lo necesitaba

  3. Jon Palma dice:

    Gracias por el dato, traigo una discusión con mi programador que qiere utilizar char en todo (direcciones, nombres, etc) es muy bueno pero esta loco el wei :p

  4. Ezto ta MUY BIEN!

  5. Lord Zoepaad dice:

    Muchas gracias. Ha sido de mucha ayuda, tanto para saber la diferencia entre los cuatro tipos de datos y el almacenamiento en la base de datos.

  6. Muy útil la información. eres grande man.