Evet, Oracle veritabanınız bir Unicode karakter kümesi kullanılarak oluşturulduysa, SQL Server'da NVARCHAR
, Oracle'da bir VARCHAR2
'a geçirilmelidir. Oracle'da, NVARCHAR
veri türü, veritabanı karakter kümesi Unicode'u desteklemediğinde uygulamaların Unicode karakter kümesi kullanarak veri depolamasına izin vermek için vardır.
Bir şey taşırken, ancak, karakter uzunluğu semantik farkında olmak. SQL Server'da, NVARCHAR(20)
, UCS-2'de 40 bayta kadar gerektiren 20 karakter için yer ayırır. Oracle'da, varsayılan olarak, bir VARCHAR2(20)
, 20 bayt depolama alanı ayırır. En sen misin o. Muhtemelen Oracle türlerini beyan etmek istiyorum çok daha (AL32UTF8
yılında tek bir karakter 1 ile 3 bayt gerektirir idare edecek ihtimalini gösterir hangi VARCHAR2(20 CHAR)
olarak gerçi AL32UTF8
karakter setinde, o 6 karakterler için sadece yeterli alan potansiyel olarak Ne kadar çok bayt gerektirdiğine bakılmaksızın 20 karakter için alan ayırmak istiyorum: Bu, diğer 10 karakter dizgisi reddedilirken bazı 20 karakter dizesinin neden reddedildiğini açıklamaya çalışmaktan çok daha kolay iletişim kurma eğilimindedir.
oturum düzeyinde varsayılan uzunluğu semantik böylece bayt semantik yerine karakterini kullanacak herhangi bir uzunlukta anlambilimini belirtmeden oluşturduğunuz herhangi tablolar
ALTER SESSION SET nls_length_semantics=CHAR;
Bu, yeni bir sütun tanımladığınızda her zaman CHAR
yazmayı önlemenize izin verir. Sistem seviyesinde, ancak NLS ekibi tarafından cesaretlendirilmediğini de ayarlamak mümkündür - görünüşe göre, Oracle'ın sunduğu tüm betikler, NLS_LENGTH_SEMANTICS
'un değiştirildiği veritabanlarına karşı kapsamlı bir şekilde test edilmemiştir. Ve muhtemelen çok az sayıda üçüncü taraf betiği olmuştur.
Microsoft, Oracle NVARCHAR2 <==> SQLServer NVARCHAR.'ı doğruladı. Ancak onaylamak istediklerim Oracle VARCHAR2 <==> SQLServer NVARCHAR? (oracle VARCHAR2 unicode olarak hazırdır) – Zenil