NCHAR(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
유니코드 표준에서 정의된 대로 지정된 정수 코드에 해당하는 유니코드 문자를 반환합니다.
구문
NCHAR ( integer_expression )
인수
integer_expression
데이터베이스의 데이터 정렬에 SC(보조 문자) 플래그가 포함되어 있지 않은 경우 이 인수는 0에서 65535(0~0xFFFF) 사이의 양의 정수입니다. 이 범위 밖의 값을 지정한 경우 NULL이 반환됩니다. 보조 문자에 대한 자세한 내용은 Collation and Unicode Support를 참조하세요.
데이터베이스의 데이터 정렬이 SC 플래그를 지원하는 경우 이 인수는 1에서 1114111(0~0x10FFFF) 사이의 양의 정수입니다. 이 범위 밖의 값을 지정한 경우 NULL이 반환됩니다.
반환 형식
nchar(1): 기본 데이터베이스 데이터 정렬이 보조 문자를 지원하지 않는 경우
nvarchar(2): 기본 데이터베이스 데이터 정렬이 보조 문자를 지원하는 경우
integer_expression 매개 변수가 0 - 0xFFFF 범위에 있을 경우 한 문자만 반환됩니다. 값이 더 높을 경우 NCHAR가 해당 서로게이트 쌍을 반환합니다. NCHAR(<High surrogate>) + NCHAR(\<Low Surrogate>)
를 사용하여 서로게이트 쌍을 생성하지 마세요. 대신 보조 문자를 지원하는 데이터베이스 데이터 정렬을 사용한 다음 서로게이트 쌍에 대한 유니코드 코드 포인트를 지정합니다. 다음 예에서는 서로게이트 쌍을 생성하는 이전 스타일의 방법과 유니코드 코드 포인트를 지정하는 기본 방법을 모두 보여 줍니다.
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));
예제
A. NCHAR 및 UNICODE 사용
다음 예에서는 UNICODE
및 NCHAR
함수를 사용하여 UNICODE
문자열에 있는 두 번째 문자의 NCHAR
값과 København
(유니코드 문자)를 인쇄하고 실제 두 번째 문자인 ø
를 인쇄합니다.
DECLARE @nstring NCHAR(8);
SET @nstring = N'København';
SELECT UNICODE(SUBSTRING(@nstring, 2, 1)),
NCHAR(UNICODE(SUBSTRING(@nstring, 2, 1)));
GO
결과 집합은 다음과 같습니다.
----------- -
248 ø
(1 row(s) affected)
B. SUBSTRING, UNICODE, CONVERT 및 NCHAR 사용
다음 예에서는 SUBSTRING
, UNICODE
, CONVERT
및 NCHAR
함수를 사용하여 København
문자열에 있는 각 문자의 문자 번호, 유니코드 문자 및 UNICODE 값을 인쇄합니다.
-- 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
결과 집합은 다음과 같습니다.
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)
참고 항목
ASCII(Transact-SQL)
CHAR(Transact-SQL)
UNICODE(Transact-SQL)
데이터 형식(Transact-SQL)
문자열 함수(Transact-SQL)