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 символов?
спасибо,
Ответы
Ответ 1
По умолчанию будет установлен ваш параметр NLS_LENGTH_SEMANTICS
. По умолчанию это BYTE
, чтобы соответствовать старым версиям Oracle, где не было возможности использовать семантику длины символов. Если вы определяете свою собственную схему и используете набор символов переменной ширины (например, AL32UTF8), я настоятельно рекомендую установить NLS_LENGTH_SEMANTICS
на CHAR, потому что вы почти всегда намеревались указывать длины в символах, не входящих в байты.
Ответ 2
Вы можете проверить текущее значение, используя следующий запрос:
SELECT
value
FROM
NLS_DATABASE_PARAMETERS
WHERE
parameter='NLS_LENGTH_SEMANTICS';