Indagamos por distintos sitios para así tener para ti la solución para tu duda, en caso de inquietudes puedes dejarnos tu comentario y contestaremos con mucho gusto, porque estamos para servirte.
Solución:
Oracle introdujo el tipo de datos NVARCHAR2 para las bases de datos que desean usar Unicode para algunas columnas mientras mantienen otro conjunto de caracteres para el resto de la base de datos (que usa VARCHAR2). El NVARCHAR2 es un tipo de datos solo Unicode.
Una razón por la que puede querer usar NVARCHAR2 podría ser que su base de datos usa un conjunto de caracteres que no es Unicode y aún desea poder almacenar datos Unicode para algunas columnas sin cambiar el conjunto de caracteres principal. Otra razón podría ser que desee utilizar dos conjuntos de caracteres Unicode (AL32UTF8 para datos que provienen principalmente de Europa occidental, AL16UTF16 para datos que provienen principalmente de Asia, por ejemplo) porque los diferentes conjuntos de caracteres no almacenarán los mismos datos con la misma eficiencia.
Ambas columnas en su ejemplo (Unicode VARCHAR2(10 CHAR)
y NVARCHAR2(10)
) podría almacenar los mismos datos, sin embargo, el almacenamiento de bytes será diferente. Algunas cadenas pueden almacenarse de manera más eficiente en uno u otro.
Tenga en cuenta también que algunas características no funcionarán con NVARCHAR2, consulte esta pregunta SO:
- Oracle Text no funcionará con NVARCHAR2. ¿Qué más podría no estar disponible?
No creo que la respuesta de Vincent Malgrat sea correcta. Cuándo NVARCHAR2
era introducido Hace mucho tiempo nadie hablaba siquiera de Unicode.
Inicialmente, Oracle proporcionó VARCHAR2
y NVARCHAR2
para apoyar la localización. Los datos comunes (incluido PL/SQL) se mantuvieron en VARCHAR2
, más probable US7ASCII
estos días. Entonces podrías aplicar NLS_NCHAR_CHARACTERSET
individualmente (por ejemplo WE8ISO8859P1
) para cada uno de sus clientes en cualquier país sin tocar la parte común de su aplicación.
Conjunto de caracteres de hoy en día AL32UTF8
es el valor predeterminado que es totalmente compatible con Unicode. En mi opinión, hoy ya no hay razón para usar NLS_NCHAR_CHARACTERSET
, es decir NVARCHAR2
, NCHAR2
, NCLOB
. Tenga en cuenta que cada vez hay más funciones nativas de Oracle que no son compatibles con NVARCHAR2, por lo que debería evitarlo. Tal vez la única razón es cuando tienes que admitir principalmente personajes asiáticos donde AL16UTF16
consume menos almacenamiento en comparación con AL32UTF8
.
-
El
NVARCHAR2
almacena datos de caracteres de longitud variable. Cuando crea una tabla con elNVARCHAR2
columna, el tamaño máximo siempre está en la semántica de longitud de caracteres, que también es la semántica de longitud predeterminada y única para laNVARCHAR2
tipo de datos.El
NVARCHAR2
usos de tipos de datosAL16UTF16
juego de caracteres que codifica datos Unicode en elUTF-16
codificación ElAL16UTF16
usar2 bytes
para almacenar un caracter. Además, la longitud máxima en bytes de unNVARCHAR2
depende del juego de caracteres nacional configurado. -
VARCHAR2
El tamaño máximo deVARCHAR2
puede estar en bytes o caracteres. Su columna solo puede almacenar caracteres en el conjunto de caracteres predeterminado, mientras que laNVARCHAR2
puede almacenar prácticamente cualquier carácter. Un solo carácter puede requerir hasta4 bytes
.
Definiendo el campo como:
VARCHAR2(10 CHAR)
le dice a Oracle que puede usar suficiente espacio para almacenar 10 caracteres, sin importar cuántos bytes se necesiten para almacenar cada uno. Un solo carácter puede requerir hasta4 bytes
.NVARCHAR2(10)
le dices a Oracle que puede almacenar 10 caracteres con2 bytes
por carácter
En resumen:
-
VARCHAR2(10 CHAR)
puede almacenar un máximo de10 characters
y máximo de40 bytes
(depende del juego de caracteres nacional configurado). -
NVARCHAR2(10)
puede almacenar un máximo de10 characters
y máximo de20 bytes
(depende del juego de caracteres nacional configurado).
Nota: El conjunto de caracteres puede ser UTF-8
, UTF-16
,….
Por favor, eche un vistazo a este tutorial para obtener más detalles.
¡Que tenga un buen día!
Puntuaciones y reseñas
Nos puedes confirmar nuestro trabajo añadiendo un comentario y puntuándolo te damos la bienvenida.