Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
sabit boyutlu, nchar
Bağımsız değişken
nchar [ ( n ) ]
Sabit boyutlu dize verileri.
n, dize boyutunu bayt çiftleri olarak tanımlar ve 1 ile 4.000 arasında bir değer olmalıdır. Depolama boyutu iki kat n bayttır.
nvarchar [ ( n | max ) ]
Değişken boyutlu dize verileri.
n değeri bayt çiftlerinde dize boyutunu tanımlar ve 1 ile 4.000 arasında olabilir.
maksimum, maksimum depolama boyutunun 2^31-1 karakter (2 GB) olduğunu gösterir. Depolama boyutu iki kat n bayt + 2 bayttır.
Açıklamalar
Yaygın bir yanlış anlama, nchar(n) ve nvarchar(n)ile n karakter sayısını tanımladığını düşünmektir. Ancak, nchar(n) ve nvarchar(n)içinde, n dize uzunluğunu bayt çiftleri (0-4.000) olarak tanımlar. n hiçbir zaman depolanabilecek karakter sayısını tanımlamaz. Bu kavram, char ve varchartanımına benzer.
Yanlış anlamanın nedeni, Unicode aralığı 0 ile 65.535 arasında tanımlanan karakterler kullanıldığında her bayt çifti başına bir karakter depolanabilmesidir. Ancak, daha yüksek Unicode aralıklarında (65.536 - 1.114.111) bir karakter iki bayt çifti kullanabilir. Örneğin, nchar(10)olarak tanımlanan bir sütunda, Veritabanı Altyapısı bir bayt çifti (Unicode aralığı 0 -65.535) kullanan 10 karakter depolayabilir, ancak iki bayt çifti kullanırken 10 karakterden daha az (Unicode aralığı 65.536 ile 1.114.111) arasında olabilir. Unicode depolama ve karakter aralıkları hakkında daha fazla bilgi için bkz. UTF-8 ile UTF-16 arasındaki depolama farkları.
n bir veri tanımında veya değişken bildirim deyiminde belirtilmediğinde varsayılan uzunluk 1'dir. CAST işleviyle n belirtilmediğinde varsayılan uzunluk 30'dur.
nchar veya nvarcharkullanıyorsanız şunları yapmanızı öneririz:
- Sütun veri girdilerinin boyutları tutarlı olduğunda nchar
kullanın. - Sütun veri girişlerinin boyutları önemli ölçüde değiştiğinde nvarchar
kullanın. - Sütun veri girişlerinin boyutları önemli ölçüde değiştiğinde ve dize uzunluğu 4.000 bayt çiftini aştığında nvarchar(max)
kullanın.
sysname, nvarchar(128)ile eşdeğer olan sistem tarafından sağlanan kullanıcı tanımlı bir veri türüdür, ancak null atanamaz. sysname, veritabanı nesne adlarına başvurmak için kullanılır.
nchar veya nvarchar kullanan nesnelere, COLLATE
yan tümcesi kullanılarak belirli bir harmanlama atanmadığı sürece veritabanının varsayılan harmanlaması atanır.
SET ANSI_PADDING
nchar ve nvarchariçin her zaman ON
.
SET ANSI_PADDING OFF
nchar veya nvarchar veri türleri için geçerli değildir.
Sc harmanlamasının kullanılıp kullanılmadığına bağlı olarak UCS-2 veya UTF-16 girişine sinyal vermek için unicode karakter dizesi sabitlerine N
harfi ön ekini ekleyin.
N
ön eki olmadan dize, veritabanının belirli karakterleri tanımayabilecek varsayılan kod sayfasına dönüştürülür. SQL Server 2019 (15.x) ve sonraki sürümlerinde UTF-8 özellikli harmanlama kullanıldığında, varsayılan kod sayfası Unicode UTF-8 karakter kümesini depolayabilen bir sayfadır.
Bir dize sabitine N
harfinin ön ekini eklediğinizde, dönüştürülecek sabit nvarchar dize veri türü (4.000) için maksimum uzunluğu aşmazsa örtük dönüştürme UCS-2 veya UTF-16 dizesine neden olur. Aksi takdirde örtük dönüştürme, nvarchar(max)
Uyarı
Null olmayan her varchar(max) veya nvarchar(max) sütunu, sıralama işlemi sırasında 8.060 bayt satır sınırına göre sayılan 24 bayt ek sabit ayırma gerektirir. Bu ek baytlar, bir tablodaki boş olmayan varchar(max) veya nvarchar(max) sütun sayısı için örtük bir sınır oluşturabilir. Tablo oluşturulduğunda (satır boyutu üst sınırının izin verilen en fazla 8.060 bayt'ı aştığını belirten olağan uyarının ötesinde) veya veri ekleme sırasında özel bir hata sağlanmadı. Bu büyük satır boyutu, bazı normal işlemler sırasında kullanıcıların tahmin etmeyebileceği hatalara (hata 512 gibi) neden olabilir. İki işlem örneği, kümelenmiş dizin anahtarı güncelleştirmesi veya tam sütun kümesinin sıralarıdır.
Karakter verilerini dönüştürme
Karakter verilerini dönüştürme hakkında bilgi için bkz. char ve varchar. Veri türleri arasında dönüştürme hakkında daha fazla bilgi için bkz. CAST ve CONVERT.
İlgili içerik
- ALTER TABLE (Transact-SQL)
- CAST ve CONVERT (Transact-SQL)
- COLLATE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- Veri türleri (Transact-SQL)
- DECLARE @local_variable (Transact-SQL)
- LIKE (Transact-SQL)
- SET ANSI_PADDING (Transact-SQL)
- SET @local_variable (Transact-SQL)
- Harmanlama ve Unicode Desteği
- Single-Byte ve Çok Baytlı Karakter Kümeleri