Het NVARCHAR2-datatype is door Oracle geïntroduceerd voor databases die Unicode willen gebruiken voor sommige kolommen, terwijl ze een andere tekenset behouden voor de rest van de database (die VARCHAR2 gebruikt). De NVARCHAR2 is een datatype met alleen Unicode.
Een van de redenen waarom u NVARCHAR2 wilt gebruiken, kan zijn dat uw database een niet-Unicode-tekenset gebruikt en u toch Unicode-gegevens voor sommige kolommen wilt kunnen opslaan zonder de primaire tekenset te wijzigen. Een andere reden kan zijn dat u twee Unicode-tekensets wilt gebruiken (AL32UTF8 voor gegevens die voornamelijk uit West-Europa komen, AL16UTF16 voor gegevens die voornamelijk uit Azië komen) omdat verschillende tekensets dezelfde gegevens niet even efficiënt kunnen opslaan.
Beide kolommen in uw voorbeeld (Unicode VARCHAR2(10 CHAR)
en NVARCHAR2(10)
) dezelfde gegevens kunnen opslaan, maar de byteopslag zal anders zijn. Sommige strings kunnen efficiënter in de een of de ander worden opgeslagen.
Merk ook op dat sommige functies niet werken met NVARCHAR2, zie deze SO-vraag:
- Oracle Text werkt niet met NVARCHAR2. Wat is er nog meer niet beschikbaar?