O tipo de dados NVARCHAR2 foi introduzido pelo Oracle para bancos de dados que desejam usar Unicode para algumas colunas, mantendo outro conjunto de caracteres para o restante do banco de dados (que usa VARCHAR2). O NVARCHAR2 é um tipo de dados somente Unicode.
Uma razão pela qual você pode querer usar NVARCHAR2 pode ser que seu banco de dados usa um conjunto de caracteres não Unicode e você ainda deseja armazenar dados Unicode para algumas colunas sem alterar o conjunto de caracteres primário. Outro motivo pode ser que você queira usar dois conjuntos de caracteres Unicode (AL32UTF8 para dados que vêm principalmente da Europa Ocidental, AL16UTF16 para dados que vêm principalmente da Ásia, por exemplo) porque conjuntos de caracteres diferentes não armazenam os mesmos dados com a mesma eficiência.
Ambas as colunas no seu exemplo (Unicode
VARCHAR2(10 CHAR)
e NVARCHAR2(10)
) seria capaz de armazenar os mesmos dados, porém o armazenamento de bytes será diferente. Algumas strings podem ser armazenadas de forma mais eficiente em uma ou outra. Observe também que alguns recursos não funcionarão com NVARCHAR2, veja esta pergunta SO:
- O Oracle Text não funcionará com NVARCHAR2. O que mais pode estar indisponível?