Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
Rögzített méretű, ncharvagy változó méretű karakter adattípusok, nvarchar. Az SQL Server 2012 (11.x) és újabb verzióiban, ha kiegészítő karakter (SC) kompatibilis rendezést használ, ezek az adattípusok a Unicode karakteradatok teljes tartományát tárolják, és az UTF-16 karakterkódolást használják. Ha nem SC rendezés van megadva, akkor ezek az adattípusok csak a UCS-2 karakterkódolás által támogatott karakteradatok részhalmazát tárolják.
Arguments
nchar [ ( n ) ]
Rögzített méretű sztringadatok. n bájtpárokban határozza meg a sztring méretét, és 1 és 4000 közötti értéknek kell lennie. A tárterület mérete kétszer n bájt. A UCS-2 kódolás esetén a tárterület mérete kétszer n bájt, és a tárolható karakterek száma is n. UTF-16 kódolás esetén a tárterület mérete még mindig kétszer n bájt, de a tárolható karakterek száma kisebb lehet, mint n, mivel a kiegészítő karakterek két bájtpárt használnak (más néven helyettesítő párokat). A nchar ISO-szinonimái nemzeti karakter és nemzeti karakter.
nvarchar [ ( n | max) ]
Változó méretű sztringadatok. Az n
Remarks
Gyakori tévhit, hogy nchar(n) és nvarchar(n)n határozza meg a karakterek számát. Azonban nchar(n) és nvarchar(n), az nbájtpárok (0-4 000) sztringhosszát határozza meg. n soha nem határoz meg tárolható karakterek számát. Ez a fogalom hasonlít a karakter és a varchardefiníciójára.
A tévhit azért fordul elő, mert ha a Unicode 0 és 65 535 közötti tartományában definiált karaktereket használ, minden bájtpáronként egy karakter tárolható. Magasabb Unicode-tartományokban (65 536–1 114 1111) azonban egy karakter két bájtpárt használhat. Az nchar(10)néven definiált oszlopban például az adatbázismotor 10 karaktert tárolhat, amelyek egy bájtpárt használnak (Unicode-tartomány 0 és 65 535 között), de két bájtpár használata esetén kevesebb mint 10 karaktert (Unicode-tartomány: 65 536–1,114,111). További információ a Unicode-tárterületről és a karaktertartományokról: Az UTF-8 és az UTF-16közötti tárolási különbségek.
Ha n nincs megadva adatdefinícióban vagy változódeklarációs utasításban, az alapértelmezett hossz 1. Ha n nincs megadva a CAST függvénnyel, az alapértelmezett hossz 30.
Ha nchar vagy nvarcharhasznál, javasoljuk, hogy:
- Ha az oszlopadat-bejegyzések mérete konzisztens, használja nchar.
- Használja nvarchar, ha az oszlopadat-bejegyzések mérete jelentősen eltér.
- Használja nvarchar(max), ha az oszlopadat-bejegyzések mérete jelentősen eltér, és a sztring hossza meghaladhatja a 4000 bájtpárt.
sysname egy rendszer által biztosított, felhasználó által megadott adattípus, amely funkcionálisan egyenértékű nvarchar(128), azzal a különbségtel, hogy nem null értékű. sysname adatbázis-objektumnevekre hivatkozik.
Az nchar vagy nvarchar használó objektumok az adatbázis alapértelmezett rendezési pontját kapják meg, kivéve, ha egy adott rendezés van hozzárendelve a COLLATE záradék használatával.
SET ANSI_PADDING mindig ONnchar és nvarchar.
SET ANSI_PADDING OFF nem vonatkozik az nchar vagy nvarchar adattípusra.
Unicode-karaktersztring-állandók előtagja az UCS-2 vagy UTF-16 bemenet jelzésére N betűvel attól függően, hogy SC-rendezést használ-e. A N előtag nélkül a sztring az adatbázis alapértelmezett kódlapjára lesz konvertálva, amely esetleg nem ismer fel bizonyos karaktereket. Az SQL Server 2019 (15.x) és újabb verzióiban az UTF-8-kompatibilis rendezés használatakor az alapértelmezett kódlap képes a Unicode UTF-8 karakterkészlet tárolására.
Ha egy sztringállandót előtagként Nbetűvel, az implicit átalakítás UCS-2 vagy UTF-16 sztringet eredményez, ha az átalakítandó állandó nem haladja meg a nvarchar sztring adattípusának maximális hosszát (4000). Ellenkező esetben az implicit konverzió nagy értékű nvarchar(max)eredményez.
Warning
Minden nem null értékű varchar(max) vagy nvarchar(max) oszlophoz 24 bájt további rögzített foglalás szükséges, amely a rendezési művelet során a 8060 bájtos sorkorlátnak felel meg. Ezek a további bájtok implicit korlátot hozhatnak létre a tábla nem null értékű varchar(max) vagy nvarchar(max) oszlopainak számára. A tábla létrehozásakor (a szokásos figyelmeztetésen túl, hogy a maximális sorméret meghaladja a megengedett maximális 8060 bájtot) vagy az adatbeszúráskor nem jelenik meg különleges hiba. Ez a nagy sorméret olyan hibákat (például 512-es hibát) okozhat, amelyeket a felhasználók bizonyos normál műveletek során nem láthatnak előre. A műveletekre két példa a fürtözött indexkulcs frissítése vagy a teljes oszlopkészlet rendezése.
Karakteradatok konvertálása
A karakteradatok konvertálásáról további információt karakter- és varchar-című témakörben talál. További információ az adattípusok közötti konvertálásról: CAST és CONVERT.
Kapcsolódó tartalom
- ALTERNATÍV TÁBLÁZAT (Transact-SQL)
- CAST és CONVERT (Transact-SQL)
- COLLATE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- adattípusok (Transact-SQL)
- DECLARE @local_variable (Transact-SQL)
- MINT (Transact-SQL)
- SET ANSI_PADDING (Transact-SQL)
- SET @local_variable (Transact-SQL)
- rendezés és Unicode-támogatás
- Single-Byte és többbájtos karakterkészletek