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

Разлика между NVARCHAR в Oracle и SQL Server?

Да, ако вашата база данни на Oracle е създадена с помощта на набор от знаци Unicode, NVARCHAR в SQL Server трябва да се мигрира към VARCHAR2 в Oracle. В Oracle, NVARCHAR типът данни съществува, за да позволи на приложенията да съхраняват данни, използвайки набор от знаци Unicode, когато наборът знаци на базата данни не поддържа Unicode.

Едно нещо, което трябва да знаете при мигрирането обаче, е семантиката на дължината на знаците. В SQL Server, NVARCHAR(20) заделя място за 20 знака, което изисква до 40 байта в UCS-2. В Oracle, по подразбиране, VARCHAR2(20) разпределя 20 байта място за съхранение. В AL32UTF8 набор от символи, който потенциално е достатъчно място само за 6 знака, въпреки че най-вероятно ще обработва много повече (един знак в AL32UTF8 изисква между 1 и 3 байта. Вероятно искате да декларирате вашите Oracle типове като VARCHAR2(20 CHAR) което показва, че искате да отделите място за 20 знака, независимо колко байта изисква това. Това обикновено е много по-лесно за общуване, отколкото да се опитвате да обясните защо са разрешени низове от 20 знака, докато други 10 низа от символи са отхвърлени.

Можете да промените семантиката на дължината по подразбиране на ниво сесия, така че всички таблици, които създавате, без да указвате каквато и да е семантика на дължина, да използват символна, а не байтова семантика

ALTER SESSION SET nls_length_semantics=CHAR;

Това ви позволява да избегнете въвеждането на CHAR всеки път, когато дефинирате нова колона. Също така е възможно да се зададе това на системно ниво, но това се обезсърчава от екипа на NLS-- очевидно не всички скриптове, предоставени от Oracle, са били щателно тествани спрямо бази данни, където NLS_LENGTH_SEMANTICS е променен. И вероятно е имало много малко скриптове на трети страни.




  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 10g с три колони

  2. Защо Kafka jdbc свързва вмъква данни като BLOB вместо varchar

  3. преодоляване на ограничението от 32k при вмъкване на параметър oracle clob IN с помощта на spring StoredProcedure

  4. Материализирани изгледи - Идентифициране на последното опресняване

  5. Как да стартирам съхранена процедура на Oracle в Ruby