Solución:
Un nvarchar
La columna puede almacenar cualquier dato Unicode. A varchar
La columna está restringida a una página de códigos de 8 bits. Algunas personas piensan que varchar
debe usarse porque ocupa menos espacio. Creo que esta no es la respuesta correcta. Las incompatibilidades de páginas de códigos son un problema, y Unicode es la cura para los problemas de páginas de códigos. Con disco y memoria baratos hoy en día, realmente ya no hay razón para perder el tiempo jugando con páginas de códigos.
Todos los sistemas operativos y plataformas de desarrollo modernos utilizan Unicode internamente. Mediante el uso nvarchar
en vez de varchar
, puede evitar realizar conversiones de codificación cada vez que lee o escribe en la base de datos. Las conversiones toman tiempo y son propensas a errores. Y la recuperación de errores de conversión no es un problema trivial.
Si está interactuando con una aplicación que usa solo ASCII, aún así recomendaría usar Unicode en la base de datos. Los algoritmos de recopilación de sistemas operativos y bases de datos funcionarán mejor con Unicode. Unicode evita problemas de conversión al interactuar con otro sistemas. Y te estarás preparando para el futuro. Y siempre puede validar que sus datos están restringidos a ASCII de 7 bits para cualquier sistema heredado que tenga que mantener, incluso mientras disfruta de algunos de los beneficios del almacenamiento Unicode completo.
varchar: Datos de caracteres no Unicode de longitud variable. La intercalación de la base de datos determina con qué página de códigos se almacenan los datos.
nvarchar: Datos de caracteres Unicode de longitud variable. Depende de la recopilación de la base de datos para las comparaciones.
Armado con este conocimiento, use el que coincida con sus datos de entrada (ASCII v. Unicode).
Siempre uso nvarchar, ya que permite que todo lo que estoy construyendo resista prácticamente cualquier dato que le arroje. Mi sistema CMS hace chino por accidente, porque usé nvarchar. En estos días, cualquier aplicación nueva no debería preocuparse realmente por la cantidad de espacio requerido.