Простият отговор е, че за разлика от MySQL наборите от символи не могат да бъдат дефинирани в ниво на колона (или таблица)
. Латиница1
също не е валиден набор от символи на 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. Ще ми е интересно да знам ситуацията