Diferencia entre varchar y nvarchar en SQL Server

SQL Server dispone de varios tipos de datos, cada tipo de datos nos va servir para almacenar un dato que después podemos convertir en información, pero hay dos tipos de datos que generan dudas entre desarrolladores : VARCHAR y NVARCHAR: ¿cuál es la diferencia entre ambos tipos de datos?

VARCHAR es una abreviatura de cadena de caracteres de longitud variable (del inglés VARiable CHARacter). Puede almacenar una cadena de caracteres que puede ser tan grande como el tamaño de página de la tabla. El tamaño de una página de una tabla en SQL Server es 8.196 bytes, ninguna fila de una tabla en SQL Server puede ser más de 8.060 caracteres. Esto a su vez limita el tamaño máximo de un VARCHAR a 8.000 bytes.

NVARCHAR significa «casi» lo mismo, con la diferencia que se puede almacenar datos en formato unicode, de ahí proviene la N (uNicode).

¿Y para que sirve almacenar datos en Unicode? Si la columna donde almacenamos el texto es Unicode quiere decir que no tendremos problemas para guardar y recuperar caracteres que se usan en otros idiomas como el español (á é í ó ú ñ) o el chino, pero con el español los problemas de visualización no son muy frecuentes, con el resto de idiomas sí.

La diferencia principal entre los dos tipos de datos es la forma en que están almacenados. Cada carácter del tipo de dato VARCHAR se almacena en 8 bits (1 byte). Pero las cadenas NVARCHAR se almacenan en la base al estándar UTF-16 – de 16 bits o dos bytes por carácter, eso quiere decir que con el tipo de dato NVARCHAR sólo podremos almacenar la mitad: 4000 caracteres.

Esta es ser la razón por la que los usuarios que no cuentan con caracteres especiales en su alfabeto  prefieren guardar la información en campos VARCHAR. Ahora mismo ya no es una tendencia el ahorro de espacio ya que existe muchísimo disponible incluso en la nube sin mucho costo, la cosa cambia en dispositivos móviles pero esa es otra historia. Sin embargo depende de nosotros cuando y donde usar la combinación de ambos tipos de datos.

6 Respuestas a “Diferencia entre varchar y nvarchar en SQL Server”
  1. Daniel Loos 25 May 2018
    Reply

    Si tengo un campo nvarchar, con largo de 500… quiere decir que me dejará ingresar solo 250 ???

    eso es lo me que pasa, intento ingresar el campo con 251 caracteres y se cae «Los datos de cadena o binario se truncaran»… y si inserto 250 justo, pasa

    • Si tienes problemas de truncamiento, esto se debe a la cantidad de caracteres indicaste te permite ingresar en dicho campo. Nvarchar, como dice Jaime, solo te ocupará el doble de espacio en disco.

Dejar una Respuesta