Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-database in Microsoft Fabric Preview
Tekengegevenstypen die een vaste grootte hebben, ncharof variabele grootte, nvarchar. Wanneer in SQL Server 2012 (11.x) en latere versies een sortering met aanvullend teken (SC) wordt gebruikt, worden in deze gegevenstypen het volledige bereik van Unicode- tekengegevens opgeslagen en worden de UTF-16 tekencodering gebruikt. Als er een niet-SC-sortering is opgegeven, slaan deze gegevenstypen alleen de subset van tekengegevens op die worden ondersteund door de UCS-2 tekencodering.
Arguments
nchar [ ( n ) ]
Tekenreeksgegevens met vaste grootte. n definieert de tekenreeksgrootte in byteparen en moet een waarde van 1 tot en met 4.000 zijn. De opslaggrootte is twee keer n bytes. Voor UCS-2 codering is de opslaggrootte twee keer n bytes en wordt het aantal tekens dat kan worden opgeslagen ook n. Voor UTF-16-codering is de opslaggrootte nog steeds twee keer n bytes, maar het aantal tekens dat kan worden opgeslagen, kan kleiner zijn dan n, omdat aanvullende tekens twee byteparen gebruiken (ook wel surrogaatparengenoemd). De ISO-synoniemen voor nchar zijn nationale tekens en nationaal karakter.
nvarchar [ ( n | max ) ]
Tekenreeksgegevens van variabele grootte. De waarde van n definieert de tekenreeksgrootte in byteparen en kan tussen 1 en 4.000 zijn. maximale geeft aan dat de maximale opslaggrootte 2^31-1 tekens (2 GB) is. De opslaggrootte is twee keer n bytes + 2 bytes. Voor UCS-2 codering is de opslaggrootte twee keer n bytes + 2 bytes en het aantal tekens dat kan worden opgeslagen, ook n. Voor UTF-16-codering is de opslaggrootte nog steeds twee keer n bytes + 2 bytes. Het aantal tekens dat kan worden opgeslagen, kan echter kleiner zijn dan n, omdat aanvullende tekens twee byteparen gebruiken (ook wel surrogaatparengenoemd). De ISO-synoniemen voor nvarchar- zijn nationale tekens die variëren en nationaal karakter variëren.
Remarks
Een veelvoorkomend misvatting is om te denken dat met nchar(n) en nvarchar(n), de n het aantal tekens definieert. In nchar(n) en nvarchar(n) definieert de n de tekenreekslengte in byteparen (0-4.000). n definieert nooit getallen van tekens die kunnen worden opgeslagen. Dit concept is vergelijkbaar met de definitie van char en varchar.
De misvatting treedt op omdat wanneer u tekens gebruikt die zijn gedefinieerd in het Unicode-bereik 0 tot 65.535, één teken per bytepaar kan worden opgeslagen. In hogere Unicode-bereiken (65.536 tot 1.114.111) kan één teken echter twee byteparen gebruiken. In een kolom die is gedefinieerd als nchar(10), kan de database-engine bijvoorbeeld 10 tekens opslaan die één bytepaar gebruiken (Unicode-bereik 0 tot 65.535), maar minder dan 10 tekens bij gebruik van twee byteparen (Unicode-bereik 65.536 tot 1.114.111). Zie Storage-verschillen tussen UTF-8 en UTF-16voor meer informatie over Unicode-opslag- en tekenbereiken.
Wanneer n niet is opgegeven in een gegevensdefinitie- of variabeledeclaratie-instructie, is de standaardlengte 1. Wanneer n niet is opgegeven met de cast-functie, is de standaardlengte 30.
Als u nchar of nvarchargebruikt, raden we u aan:
- Gebruik nchar wanneer de grootte van de kolomgegevensgegevens consistent is.
- Gebruik nvarchar wanneer de grootte van de kolomgegevensgegevens aanzienlijk varieert.
- Gebruik nvarchar(max) wanneer de grootte van de kolomgegevensgegevens aanzienlijk varieert, en de tekenreekslengte kan groter zijn dan 4000 byteparen.
sysname is een door het systeem opgegeven door het systeem gedefinieerd gegevenstype dat functioneel gelijk is aan nvarchar(128), behalve dat het niet nullable is. sysname wordt gebruikt om te verwijzen naar databaseobjectnamen.
Objecten die gebruikmaken van nchar of nvarchar, krijgen de standaardsortering van de database toegewezen, tenzij een specifieke sortering wordt toegewezen met behulp van de COLLATE component.
SET ANSI_PADDING is altijd ON voor nchar en nvarchar.
SET ANSI_PADDING OFF is niet van toepassing op de nchar- of nvarchar gegevenstypen.
Voorvoegsel van een Unicode-tekenreeksconstanten met de letter N om UCS-2- of UTF-16-invoer aan te geven, afhankelijk van of een SC-sortering wordt gebruikt of niet. Zonder het N voorvoegsel wordt de tekenreeks geconverteerd naar de standaardcodepagina van de database die bepaalde tekens mogelijk niet herkent. Wanneer in SQL Server 2019 (15.x) en latere versies een UTF-8-sortering wordt gebruikt, kan de standaardcodepagina de Unicode UTF-8-tekenset opslaan.
Wanneer u een tekenreeksconstante voorvoegt met de letter N, resulteert de impliciete conversie in een UCS-2- of UTF-16-tekenreeks als de constante die moet worden geconverteerd, niet groter is dan de maximale lengte voor de nvarchar tekenreeksgegevenstype (4.000). Anders resulteert de impliciete conversie in een grote-waarde nvarchar(max).
Warning
Elke niet-null-varchar(max) of nvarchar(max) kolom vereist 24 bytes aan extra vaste toewijzing, die telt ten opzichte van de rijlimiet van 8.060 byte tijdens een sorteerbewerking. Deze extra bytes kunnen een impliciete limiet maken voor het aantal niet-null-varchar(max) of nvarchar(max) kolommen in een tabel. Er wordt geen speciale fout weergegeven wanneer de tabel wordt gemaakt (behalve de gebruikelijke waarschuwing dat de maximale rijgrootte het toegestane maximum van 8.060 bytes overschrijdt) of op het moment van het invoegen van gegevens. Deze grote rijgrootte kan fouten veroorzaken (zoals fout 512) die gebruikers mogelijk niet verwachten tijdens sommige normale bewerkingen. Twee voorbeelden van bewerkingen zijn een geclusterde indexsleutelupdate of sorteert de volledige kolomset.
Tekengegevens converteren
Zie teken- en varchar-voor informatie over het converteren van tekengegevens. Zie CAST en CONVERTvoor meer informatie over het converteren tussen gegevenstypen.
Related content
- ALTER TABLE (Transact-SQL)
- CAST en CONVERTEREN (Transact-SQL)
- COLLATE (Transact-SQL)
- MAAK TABEL AAN (Transact-SQL)
- gegevenstypen (Transact-SQL)
- DECLARE @local_variable (Transact-SQL)
- LIKE (Transact-SQL)
- ANSI_PADDING (Transact-SQL)
- SET @local_variable (Transact-SQL)
- sortering en Unicode-ondersteuning
- Single-Byte- en multibytetekensets