Sdílet prostřednictvím


NCHAR (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vrací znak Unicode s určeným celočíselným kódem, jak je definován standardem Unicode.

Transact-SQL konvence syntaxe

Syntaxe

NCHAR ( integer_expression )  

Arguments

integer_expression
Pokud srovnání databáze neobsahuje příznak Supplementary Character (SC), jedná se o kladné celé číslo od 0 do 65535 (0 až 0xFFFF). Pokud je zadána hodnota mimo tento rozsah, vrátí se NULL. Pro více informací o doplňkových znacích viz Podpora třídění a Unicode.

Když kolekce databáze podporuje SC příznak, jedná se o kladné celé číslo od 0 do 1114111 (0 až 0x10FFFF). Pokud je zadána hodnota mimo tento rozsah, vrátí se NULL.

Návratové typy

nchar(1), když výchozí třídění databáze nepodporuje doplňkové znaky.

nvarchar(2), když výchozí třídění databáze podporuje doplňkové znaky.

Pokud parametr integer_expression leží v rozsahu 0 - 0xFFFF, vrátí se pouze jeden znak. Pro vyšší hodnoty NCHAR vrací odpovídající náhradní pár. Nekonstruujte náhradní pár pomocí .NCHAR(<High surrogate>) + NCHAR(\<Low Surrogate>) Místo toho použijte databázovou kolekci podporující doplňkové znaky a poté specifikujte Unicode kódový bod pro náhradní pár. Následující příklad ukazuje jak staromódní metodu konstrukce náhradního páru, tak preferovanou metodu specifikace kódového bodu Unicode.

CREATE DATABASE test COLLATE Finnish_Swedish_100_CS_AS_SC;  
DECLARE @d NVARCHAR(10) = N'𣅿';
-- Old style method.  
SELECT NCHAR(0xD84C) + NCHAR(0xDD7F);   
  
-- Preferred method.   
SELECT NCHAR(143743);   
  
-- Alternative preferred method.  
SELECT NCHAR(UNICODE(@d));    

Examples

A. Použití NCHAR a UNICODE

Následující příklad používá UNICODE funkce a NCHAR k vytištění UNICODE hodnoty a NCHAR (Unicode znaku) druhého znaku København řetězce znaků a k vytištění skutečného druhého znaku, ø.

DECLARE @nstring NCHAR(8);  
SET @nstring = N'København';  
SELECT UNICODE(SUBSTRING(@nstring, 2, 1)),   
   NCHAR(UNICODE(SUBSTRING(@nstring, 2, 1)));  
GO  

Tady je soubor výsledků.

----------- -   
248         ø  
(1 row(s) affected)  

B. Použití SUBSTRING, UNICODE, CONVERT a NCHAR

Následující příklad používá , , , a NCHAR funkce k vytištění čísla znaku, znaku Unicode a hodnoty UNICODE každého znaku v řetězci København. CONVERTUNICODESUBSTRING

-- The @position variable holds the position of the character currently  
-- being processed. The @nstring variable is the Unicode character   
-- string to process.  
DECLARE @position INT, @nstring NCHAR(9);  
-- Initialize the current position variable to the first character in   
-- the string.  
SET @position = 1;  
-- Initialize the character string variable to the string to process.  
-- Notice that there is an N before the start of the string. This   
-- indicates that the data following the N is Unicode data.  
SET @nstring = N'København';  
-- Print the character number of the position of the string you are at,   
-- the actual Unicode character you are processing, and the UNICODE   
-- value for this particular character.  
PRINT 'Character #' + ' ' + 'Unicode Character' + ' ' + 'UNICODE Value';  
WHILE @position <= DATALENGTH(@nstring)  
   BEGIN  
   SELECT @position,   
      NCHAR(UNICODE(SUBSTRING(@nstring, @position, 1))),  
      CONVERT(NCHAR(17), SUBSTRING(@nstring, @position, 1)),  
      UNICODE(SUBSTRING(@nstring, @position, 1))  
   SELECT @position = @position + 1  
   END;  
GO  

Tady je soubor výsledků.

Character # Unicode Character UNICODE Value  
  
----------- ---- ----------------- -----------   
1           K    K                 75  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
2           ø    ø                 248  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
3           b    b                 98  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
4           e    e                 101  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
5           n    n                 110  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
6           h    h                 104  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
7           a    a                 97  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
8           v    v                 118  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
9           n    n                 110  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
10          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
11          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
12          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
13          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
14          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
15          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
16          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
17          NULL                   NULL  
  
(1 row(s) affected)  
  
----------- ---- ----------------- -----------   
18          NULL                   NULL  
  
(1 row(s) affected)  

Viz také

ASCII (Transact-SQL)
ZNAK (Transact-SQL)
UNICODE (Transact-SQL)
Datové typy (Transact-SQL)
řetězcové funkce (Transact-SQL)