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