Предположим, что набор символов базы данных - это UTF-8, который является рекомендуемым параметром в последних версиях Oracle. В этом случае для хранения некоторых символов в базе данных требуется более 1 байта.
Если вы определили поле как VARCHAR2(11 BYTE)
, Oracle может использовать до 11 байт для хранения, но на самом деле вы не сможете сохранить 11 символов в поле, потому что некоторые из них занимают более одного байта для хранения, например неанглийские символы.
Определяя поле как VARCHAR2(11 CHAR)
, вы указываете Oracle, что он может использовать достаточно места для хранения 11 символов, независимо от того, сколько байт требуется для хранения каждого из них. Для одного символа может потребоваться до 4 байтов.