Добрый день, полезно будет напомнить стр. 683 книги Дядюшки Тома (Oracle для профессионалов. 2016 год).
Таблица 12. 1. Четыре базовых строковых типа.
При использовании многобайтного набора символов вроде UTF8 в определениях
VARCHAR2 / CHAR я советую применять модификатор CHAR, т.е. записывать
VARCНAR2( 8 0 СНАR ), а не VARCНAR2 ( 8 0 ), т. к. ваше намерение, скорее всего, заключается
в определении столбца, который фактически может хранить 80 символов данных. С помощью параметра NLS_LENGTH_SEМANTICS на уровне сеанса или системы
можно изменить стандартное поведение с ВУТЕ на СНАR. Я не рекомендую изменять
эту настройку на уровне системы; лучше ее использовать как часть команд ALTER
SESSION в сценариях установки схемы базы данных. Любое приложение, которое
требует от базы данных наличие специфического набора установок NLS, является
недружественным . В большинстве случаев такие приложения не могут быть установлены
в базе данных с другими приложениями, которые не требуют таких настроек,
а полагаются на стандартные значения.
Важно также помнить о том, что верхний предел количества байтов, хранящихся
в VARCHAR2, составляет 4000. Однако даже если указать VARCHAR2 ( 4000 СНАR ), то
уместить 4000 символов в это поле может не получиться. На самом деле, может оказаться, что в это поле помещаются только 1 000 символов, если все они требуют по 4
байта для представления в выбранном наборе символов!
Таблица 12. 1. Четыре базовых строковых типа.
При использовании многобайтного набора символов вроде UTF8 в определениях
VARCHAR2 / CHAR я советую применять модификатор CHAR, т.е. записывать
VARCНAR2( 8 0 СНАR ), а не VARCНAR2 ( 8 0 ), т. к. ваше намерение, скорее всего, заключается
в определении столбца, который фактически может хранить 80 символов данных.
С помощью параметра NLS_LENGTH_SEМANTICS на уровне сеанса или системы
можно изменить стандартное поведение с ВУТЕ на СНАR. Я не рекомендую изменять
эту настройку на уровне системы; лучше ее использовать как часть команд ALTER
SESSION в сценариях установки схемы базы данных. Любое приложение, которое
требует от базы данных наличие специфического набора установок NLS, является
недружественным . В большинстве случаев такие приложения не могут быть установлены
в базе данных с другими приложениями, которые не требуют таких настроек,
а полагаются на стандартные значения.
Важно также помнить о том, что верхний предел количества байтов, хранящихся
в VARCHAR2, составляет 4000. Однако даже если указать VARCHAR2 ( 4000 СНАR ), то
уместить 4000 символов в это поле может не получиться. На самом деле, может оказаться, что в это поле помещаются только 1 000 символов, если все они требуют по 4
байта для представления в выбранном наборе символов!