Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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)