14/03/2011, 04:22
|
| | Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 9 meses Puntos: 1 | |
VARCHAR2 vs NVARCHAR2. ¿Cuándo utilizarlo? Hola:
Tenemos una aplicación en la que la mayoría de los datos de tipo char están definidos como VARCHAR2 n, byte.
Hemos visto que al utilizar caracteres especiales, obteníamos un error de tipo valor demasiado largo.
Buscando soluciones, el analista ha propuesto cambiar la definición de dichos campos a NVARCHAR2 y yo, que recordaba de otro proyecto que debía permitir el uso de caracteres de todo tipo, es decir, chinos, rusos, españoles,franceses... y no utilizaba NVARCHAR2 sino VARCHAR2, he propuesto cambiar la definición a VARCHAR2 n char.
He estado leyendo diferente documentación y buscado en el foro de Oracle y no termino de ver qué ventaja tiene la utilización de NVARCHAR2 en lugar de VARCHAR2 si la definición del parámetro NLS CHARACTERSET de la BBDD está preparado para admitir cualquier caracter, en principio el juego que tenemos ahora es UTF8.
Como ventaja de VARCHAR2 n CHAR, veo que el espacio de disco necesario puede ser menor, ya que para caracteres especiales utilizará 2 bytes mientras que para caracteres normales se quedará en 1. Sin embargo, el tipo NVARCHAR2 ocupa siempre 2 bytes.
En segundo lugar, esta pequeña variación en la definición no me obliga a borrar todos los datos actuales mientras que el cambio de tipo de dato me obliga primero a borrarlo todo.
Por último, en este proyecto sólo se van a utilizar 2 idiomas, inglés y español pero los equipos pueden estar en cualquier parte del mundo con cualquier configuración de idioma e incluso en la oficina tenemos equipos instalados con idioma español y otros en inglés.
Si he entendido bien el tipo NVARCHAR2, la N viene dada por el sistema que utiliza el cliente. ¿Quiere decir eso que si un usuario tiene un sistema configurado con un unicode que no reconoce ñ o tildes, pero cambia el teclado para poder insertar esos caracteres no le va a dejar?
Un saludo y gracias.
Última edición por JaimeLG; 14/03/2011 a las 05:11 |