varchar2 (n BYTE | CHAR) по умолчанию -> CHAR или BYTE - PullRequest
32 голосов
/ 20 сентября 2011

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

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

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

спасибо,

Ответы [ 2 ]

35 голосов
/ 20 сентября 2011

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

11 голосов
/ 27 ноября 2015

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

SELECT
  value

FROM
  NLS_DATABASE_PARAMETERS

WHERE
  parameter='NLS_LENGTH_SEMANTICS';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...