Oracle « разница между VARCHAR2(N BYTE) и VARCHAR2(N CHAR) в oracle

В oracle есть возможность объявить поле как VARCHAR2(BYTE) и VARCHAR2(CHAR).

Какая принципиальная разница между ними и какой в каком случае нужно использовать?

1 ответов



Сделаю вольный перевод по ссылке из первого ответа

Допустим у вас кодировка таблицы выставлена в UTF-8. В UTF-8 символы отличные от ASCII(т.е латинские) занимают больше чем один байт. Т.е если вы вставляете строку из 11-ти символов она может весить более чем 11 байт(по 2 байта на не латинский символ ) и ваша строка может просто не поместиться в 11 байт, хотя и имеет длину 11 символов.

Если же вы будете использовать вариант VARCHAR2(CHAR) то независимо от кодировки строка весом более 1 байт но длиной в 11 символов поместится.

Думаю что лучше использовать второй вариант, и использовать UTF-8