Udostępnij za pomocą


NCHAR (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Zwraca znak Unicode z określonym kodem całkowitoliczbowym, zgodnie ze standardem Unicode.

Transact-SQL konwencje składni

Składnia

NCHAR ( integer_expression )  

Arguments

integer_expression
Gdy zestawienie bazy danych nie zawiera flagi znaku uzupełniającego (SC), jest to dodatnia liczba całkowita od 0 do 65535 (od 0 do 0xFFFF). Jeśli podana zostanie wartość spoza tego zakresu, zwraca się NULL. Więcej informacji o znakach uzupełniających można znaleźć w sekcji Obsługa Sortowania i Unicode.

Gdy zestawienie bazy danych obsługuje flagę SC, jest to dodatnia liczba całkowita od 0 do 1114111 (0 do 0x10FFFF). Jeśli podana zostanie wartość spoza tego zakresu, zwraca się NULL.

Typy zwracane

nchar(1), gdy domyślna sortacja bazy danych nie obsługuje znaków uzupełniających.

nvarchar(2), gdy domyślna sortacja bazy danych obsługuje znaki uzupełniające.

Jeśli parametr integer_expression znajduje się w zakresie 0 - 0xFFFF, zwracany jest tylko jeden znak. Dla wyższych wartości NCHAR zwraca odpowiadającą parę zastępczą. Nie konstruuj pary zastępczej za pomocą NCHAR(<High surrogate>) + NCHAR(\<Low Surrogate>). Zamiast tego użyj zestawienia bazy danych obsługującego znaki uzupełniające, a następnie określ punkt kodowy Unicode dla pary zastępczej. Poniższy przykład pokazuje zarówno stary styl konstrukcji pary zastępczej, jak i preferowaną metodę określania punktu kodowego 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));    

Przykłady

A. Wykorzystanie NCHAR i UNICODE

Poniższy przykład wykorzystuje funkcje i do UNICODE wypisania UNICODE wartości oraz (znaku NCHAR Unicode) drugiego znaku ciągu znaków København oraz do wypisania rzeczywistego drugiego znaku, ø.NCHAR

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

Oto zestaw wyników.

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

B. Używając SUBSTRING, UNICODE, CONVERT i NCHAR

Poniższy przykład wykorzystuje SUBSTRING, UNICODE, CONVERT, oraz NCHAR funkcje do wypisania numeru znaku, znaku Unicode oraz wartości UNICODE każdego znaku w ciągu København.

-- 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  

Oto zestaw wyników.

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)  

Zobacz też

ASCII (Transact-SQL)
CHAR (Transact-SQL)
UNICODE (Transact-SQL)
typy danych (Transact-SQL)
Funkcje ciągów (Transact-SQL)