Простой ответ заключается в том, что в отличие от MySQL наборы символов не могут быть определены на уровне столбца (или таблицы) .Latin1
также не является допустимым набором символов Oracle.
Наборы символов одинаковы для всей базы данных и будут указаны при создании базы данных.Вы можете найти своего персонажа, запросив NLS_DATABASE_PARAMETERS
,
select value
from nls_database_parameters
where parameter = 'NLS_CHARACTERSET'
Полный список возможных наборов символов доступен для 11g r2 и для 9i или вы можете запросить V$NLS_VALID_VALUES
.
Можно использовать оператор ALTER SESSION
для установки NLS_LANGUAGE
или NLS_TERRITORY
, но, к сожалению, вы не можете сделать это для набора символов.Я полагаю, что это потому, что изменение языка меняет то, как Oracle будет отображать сохраненных данных, тогда как изменение набора символов изменит то, как Oracle хранит данных.
При отображенииданные, конечно, вы можете указать необходимый набор символов в любом используемом вами клиенте.
Миграция набора символов не является тривиальной задачей и не должна выполняться легко.
На небольшой заметке, почему вы пытаетесь использовать латиницу 1?Было бы более нормально настроить новую базу данных в UTF-8 (иначе известном как AL32UTF8
- не использовать UTF8
) или UTF-16, чтобы вы могли эффективно хранить многобайтовые данные.Даже если вам это не нужно сейчас, имеет смысл попытаться - без гарантий в жизни - проверить вашу базу данных в будущем без необходимости переноса в будущем.
Если вы хотите указать различные наборы символов дляДля разных столбцов в базе данных лучшим вариантом будет определить, действительно ли это требование необходимо, и попытаться удалить его.Если это определенно необходимо 1 , то лучше всего использовать набор символов, который является расширенным набором всех потенциальных наборов символов.Затем, есть какое-то проверочное ограничение, которое ограничивает столбец конкретными шестнадцатеричными значениями.Я бы не советовал делать это вообще, вероятность появления ошибок огромна и чрезвычайно сложна.Кроме того, разные наборы символов по-разному отображают различные шестнадцатеричные значения.Это, в свою очередь, означает, что вам необходимо обеспечить отображение столбца определенным символом, что невозможно, поскольку оно выходит за рамки базы данных.
1.Мне было бы интересно узнать ситуацию