Подтвердить что ты не робот

Varchar2 (n BYTE | CHAR) по умолчанию → CHAR или BYTE

Я поддерживаю код, который имеет объявление схемы: -

create table sample (
        id number Primary key,
        username varchar2(100),
);

Я просмотрел документацию Oracle, и varchar2 имеет два режима объявления varchar2 (n BYTE) и varchar2 (n CHAR), Если я не укажу явно BYTE или CHAR & Амп; просто объявите имя пользователя varchar2 (500), тогда будет выделено 500 байт или 500 символов?

спасибо,

4b9b3361

Ответ 1

По умолчанию будет установлен ваш параметр NLS_LENGTH_SEMANTICS. По умолчанию это BYTE, чтобы соответствовать старым версиям Oracle, где не было возможности использовать семантику длины символов. Если вы определяете свою собственную схему и используете набор символов переменной ширины (например, AL32UTF8), я настоятельно рекомендую установить NLS_LENGTH_SEMANTICS на CHAR, потому что вы почти всегда намеревались указывать длины в символах, не входящих в байты.

Ответ 2

Вы можете проверить текущее значение, используя следующий запрос:

SELECT
  value

FROM
  NLS_DATABASE_PARAMETERS

WHERE
  parameter='NLS_LENGTH_SEMANTICS';