Oracle
 sql >> база данни >  >> RDS >> Oracle

Дефиниране на набор от знаци за колона За таблици на база данни на oracle

Простият отговор е, че за разлика от 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. Ще ми е интересно да знам ситуацията




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Трябва ли да индексирам колона(и) с първичен ключ в Oracle

  2. Как да свържете Oracle Cloud Instance с помощта на Oracle Cloud Shell?

  3. Как да мигрираме база данни на Oracle от AWS EC2 към AWS RDS

  4. Преобразуването на SQL дата води до невалиден параметър на модела на числов формат.

  5. ORA-01950:няма привилегии в пространството за таблици „USERS“